日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是Intent? 转

發(fā)布時間:2024/4/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是Intent? 转 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、Intent 作用
??? Intent 是一個將要執(zhí)行的動作的抽象的描述,一般來說是作為參數(shù)來使用,由Intent來協(xié)助完成Android各個組件之間的通訊。比如說調(diào)用 startActivity()來啟動一個activity,或者由broadcaseIntent()來傳遞給所有感興趣的 BroadcaseReceiver, 再或者由startService()/bindservice()來啟動一個后臺的service.所以可以看出來,intent主要是用來啟動其他的 activity 或者service,所以可以將intent理解成activity之間的粘合劑。
??? 要在不同的activity之間傳遞數(shù)據(jù),就要在intent中包含相應(yīng)的東西,一般來說數(shù)據(jù)中最基本的應(yīng)該包括:action、data/type、 category和extras,它們一起形成了一種語言,這種語言可以表達(dá)出諸如“給張三打電話”之類的短語組合。
??? 對于明確指出了目標(biāo)組件名稱的Intent,我們稱之為“顯式Intent”。對于沒有明確指出目標(biāo)組件名稱的Intent,則稱之為“隱式 Intent”。Android系統(tǒng)使用IntentFilter 來尋找與隱式Intent相關(guān)的對象。顯式Intent直接用組件的名稱定義目標(biāo)組件,這種方式很直接。但是由于開發(fā)人員往往并不清楚別的應(yīng)用程序的組件 名稱,因此,顯式Intent更 多用于在應(yīng)用程序內(nèi)部傳遞消息。比如在某應(yīng)用程序內(nèi),一個Activity啟動一個Service。隱式Intent恰恰相反,它不會用組件名稱定義需要 激活的目標(biāo)組件,它更廣泛地用于在不同應(yīng)用程序之間傳遞消息。

二、Intent的構(gòu)造函數(shù)
公共構(gòu)造函數(shù):
1、Intent() 空構(gòu)造函數(shù)
2、Intent(Intent o) 拷貝構(gòu)造函數(shù)
3、Intent(String action) 指定action類型的構(gòu)造函數(shù)
4、Intent(String action, Uri uri) 指定Action類型和Uri的構(gòu)造函數(shù),URI主要是結(jié)合程序之間的數(shù)據(jù)共享ContentProvider
5、Intent(Context packageContext, Class<?> cls) 傳入組件的構(gòu)造函數(shù),也就是上文提到的
6、Intent(String action, Uri uri, Context packageContext, Class<?> cls) 前兩種結(jié)合體
Intent有六種構(gòu)造函數(shù),3、4、5是最常用的,并不是其他沒用!
Intent(String action, Uri uri)? 的action就是對應(yīng)在AndroidMainfest.xml中的action節(jié)點的name屬性值。在Intent類中定義了很多的Action和Category常量。
示例代碼:
?? 1: Intent intent = new Intent(Intent.ACTION_EDIT, null);
?? 2: startActivity(intent);
示 例代碼是用了第四種構(gòu)造函數(shù),只是uri參數(shù)為null。執(zhí)行此代碼的時候,系統(tǒng)就會在程序主配置文件AndroidMainfest.xml中尋 找<action android:name="android.intent.action.EDIT" />對應(yīng)的Activity,如果對應(yīng)為多個activity具有<action android:name="android.intent.action.EDIT" />此時就會彈出一個dailog選擇Activity。

三、實例

HelloWorldActivity.java 中的通過startActivity(intent)告訴Android啟動新的Activity,但在AndroidManifest.xml(代碼如 下)中的intent-filter卻匹配不到intent,但并沒有報錯,因為HelloWorldActivity.java是Activity類的 子類,intent可以和Activity的intent-filter匹配,則直接調(diào)用Activity自身了。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
??? package="john.android.test.hello"
??? android:versionCode="1"
??? android:versionName="1.0" >

??? <uses-sdk android:minSdkVersion="7" />

??? <application
??????? android:icon="@drawable/ic_launcher"
??????? android:label="@string/app_name" >
??????? <activity
??????????? android:label="常聯(lián)系"
??????????? android:name=".HelloWorldActivity" >
??????????? <intent-filter >
??????????????? <action android:name="android.intent.action.MAIN" />
??????????????? <category android:name="android.intent.category.LAUNCHER" />
??????????? </intent-filter>
??????? </activity>
??? </application>

</manifest>

轉(zhuǎn)載于:https://www.cnblogs.com/carbs/archive/2012/06/30/2571328.html

總結(jié)

以上是生活随笔為你收集整理的什么是Intent? 转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。