Android Intent詳解

Android Intent詳解

一、什麼是Intent

1、Intent的概念:

Android提供了Intent機制來協助應用間的交互與通訊,Intent不僅可以應用於應用程序之間,也可以應用程序內部的activity、server、broadcastreceive之間。 Intent:目的,意圖
Intent是一種運行時綁定機制(runtime binding),他能在程序運行的過程中連接兩個不同的組件。通過Intent,你的程序可以向Android表達某種請求或意願,Android會選擇相應的組件來答覆。

2、對於向這三種組件發送intent有不同的機制:

使用Context.startActivity() 或 Activity.startActivityForResult(),傳入一個intent來啓動一個activity。使用 Activity.setResult(),傳入一個intent來從activity中返回結果。
將intent對象傳給Context.startService()來啓動一個service或者傳消息給一個運行的service。將intent對象傳給 Context.bindService()來綁定一個service。
將intent對象傳給 Context.sendBroadcast(),Context.sendOrderedBroadcast(),或者Context.sendStickyBroadcast()等廣播方法,則它們被傳給 broadcast receiver。

二、Intent的相關屬性:

Intent由以下各個組成部分:
component(組件):目的組件
action(動作):用來表現意圖的行動
category(類別):用來表現動作的類別
data(數據):表示與動作要操縱的數據
type(數據類型):對於data範例的描寫
extras(擴展信息):擴展信息

Flags(標誌位):期望這個意圖的運行模式
Intent類型分爲顯式Intent(直接類型)、隱式Intent(間接類型)。官方建議使用隱式Intent。上述屬性中,component屬性爲直接類型,其他均爲間接類型。

相比與顯式Intent,隱式Intnet則含蓄了許多,它並不明確指出我們想要啓動哪一個活動,而是指定一系列更爲抽象的action和category等信息,然後交由系統去分析這個Intent,並幫我們找出合適的活動去啓動。
Activity 中 Intent Filter 的匹配過程 :
Android Intent詳解

1、component(組件):目的組件

Component屬性明確指定Intent的目標組件的類名稱。(屬於直接Intent)

如果 component這個屬性有指定的話,將直接使用它指定的組件。指定了這個屬性以後,Intent的其它所有屬性都是可選的。
~~
例如,啓動第二個Activity時,我們可以這樣來寫:

button1.setOnClickListener(new OnClickListener() {            
@Override
public void onClick(View v) {
//創建一個意圖對象
Intent intent = new Intent();
//創建組件,通過組件來響應
ComponentName component = new ComponentName(MainActivity.this, SecondActivity.class);
intent.setComponent(component);                
startActivity(intent);                
}
});

https://www.cnblogs.com/smyhvae/p/3959204.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章