什么是Intent? 转
一、Intent 作用
??? Intent 是一個將要執行的動作的抽象的描述,一般來說是作為參數來使用,由Intent來協助完成Android各個組件之間的通訊。比如說調用 startActivity()來啟動一個activity,或者由broadcaseIntent()來傳遞給所有感興趣的 BroadcaseReceiver, 再或者由startService()/bindservice()來啟動一個后臺的service.所以可以看出來,intent主要是用來啟動其他的 activity 或者service,所以可以將intent理解成activity之間的粘合劑。
??? 要在不同的activity之間傳遞數據,就要在intent中包含相應的東西,一般來說數據中最基本的應該包括:action、data/type、 category和extras,它們一起形成了一種語言,這種語言可以表達出諸如“給張三打電話”之類的短語組合。
??? 對于明確指出了目標組件名稱的Intent,我們稱之為“顯式Intent”。對于沒有明確指出目標組件名稱的Intent,則稱之為“隱式 Intent”。Android系統使用IntentFilter 來尋找與隱式Intent相關的對象。顯式Intent直接用組件的名稱定義目標組件,這種方式很直接。但是由于開發人員往往并不清楚別的應用程序的組件 名稱,因此,顯式Intent更 多用于在應用程序內部傳遞消息。比如在某應用程序內,一個Activity啟動一個Service。隱式Intent恰恰相反,它不會用組件名稱定義需要 激活的目標組件,它更廣泛地用于在不同應用程序之間傳遞消息。
二、Intent的構造函數
公共構造函數:
1、Intent() 空構造函數
2、Intent(Intent o) 拷貝構造函數
3、Intent(String action) 指定action類型的構造函數
4、Intent(String action, Uri uri) 指定Action類型和Uri的構造函數,URI主要是結合程序之間的數據共享ContentProvider
5、Intent(Context packageContext, Class<?> cls) 傳入組件的構造函數,也就是上文提到的
6、Intent(String action, Uri uri, Context packageContext, Class<?> cls) 前兩種結合體
Intent有六種構造函數,3、4、5是最常用的,并不是其他沒用!
Intent(String action, Uri uri)? 的action就是對應在AndroidMainfest.xml中的action節點的name屬性值。在Intent類中定義了很多的Action和Category常量。
示例代碼:
?? 1: Intent intent = new Intent(Intent.ACTION_EDIT, null);
?? 2: startActivity(intent);
示 例代碼是用了第四種構造函數,只是uri參數為null。執行此代碼的時候,系統就會在程序主配置文件AndroidMainfest.xml中尋 找<action android:name="android.intent.action.EDIT" />對應的Activity,如果對應為多個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匹配,則直接調用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="常聯系"
??????????? android:name=".HelloWorldActivity" >
??????????? <intent-filter >
??????????????? <action android:name="android.intent.action.MAIN" />
??????????????? <category android:name="android.intent.category.LAUNCHER" />
??????????? </intent-filter>
??????? </activity>
??? </application>
</manifest>
轉載于:https://www.cnblogs.com/carbs/archive/2012/06/30/2571328.html
總結
以上是生活随笔為你收集整理的什么是Intent? 转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#事件-自定义事件
- 下一篇: 深入浅出BI——搭建环境