intent
android中提供了intent機制來協助應用間的互動與通訊,intent負責對應用中一次操作的動作、動作涉及資料、附加資料進行描述,android則根據此intent的描述,負責找到對應的元件,將 intent傳遞給呼叫的元件,並完成元件的呼叫。intent不僅可用於應用程式之間,也可用於應用程式內部的activity/service之間的互動。因此,intent在這裡起著乙個**中介的作用,專門提供元件互相呼叫的相關資訊,實現呼叫者與被呼叫者之間的解耦。
在sdk中給出了intent作用的表現形式為:
•通過context.startactivity() oractivity.startactivityforresult() 啟動乙個activity;
•通過 context.startservice() 啟動乙個服務,或者通過context.bindservice() 和後台服務互動;
•通過廣播方法(比如 context.sendbroadcast(),context.sendorderedbroadcast(), context.sendstickybroadcast()) 發給broadcast receivers。
intent屬性的設定,包括以下幾點:
action
data
type
category
component
extras
其中,extras(附加資訊),是其它所有附加資訊的集合。使用extras可以為元件提供擴充套件資訊,比如,如果要執行「傳送電子郵件」這個動作,可以將電子郵件的標題、正文等儲存在extras裡,傳給電子郵件傳送元件。
理解intent的關鍵之一是理解清楚intent的兩種基本用法:一種是顯式的intent,即在構造intent物件時就指定接收者;另一種是隱式的intent,即intent的傳送者在構造intent物件時,並不知道也不關心接收者是誰,有利於降低傳送者和接收者之間的耦合。
對於顯式intent,android不需要去做解析,因為目標元件已經很明確。
android需要解析的是那些隱式intent,通過解析,將intent對映給可以處理此intent的activity、intentreceiver或service。
intent解析機制主要是通過查詢已註冊在androidmanifest.xml中的所有intentfilter及其中定義的intent,最終找到匹配的intent。在這個解析過程中,android是通過intent的action、type、category這三個屬性來進行判斷的,判斷方法如下:
•如果intent指明定了action,則目標元件的intentfilter的action列表中就必須包含有這個action,否則不能匹配;
•如果intent沒有提供type,系統將從data中得到資料型別。和action一樣,目標元件的資料型別列表中必須包含intent的資料型別,否則不能匹配。
•如果intent中的資料不是content: 型別的uri,而且intent也沒有明確指定它的type,將根據intent中資料的scheme (比如 http: 或者mailto:) 進行匹配。同上,intent 的scheme必須出現在目標元件的scheme列表中。
•如果intent指定了乙個或多個category,這些類別必須全部出現在組建的類別列表中。比如intent中包含了兩個類別:launcher_category 和 alternative_category,解析得到的目標元件必須至少包含這兩個類別。
intent-filter的作用??
安卓頁面跳轉 Intent
package com.example.genius.activity 02 import android.content.intent import android.os.bundle import android.view.view import android.widget.button pu...
安卓Intent 隱式
相對於顯式intent 明確指出了目標元件名稱的intent 隱式intent,沒有明確指出目標元件名稱。顯式intent直接用元件的名稱定義目標元件,這種方式很直接。但是由於開發人員往往並不清楚別的應用程式的元件名稱,因此,顯式intent更多用於在應用程式內部傳遞訊息。比如在某應用程式內,乙個a...
安卓Intent 顯式
1 intent是android程式中各元件之間互動的重要方式,一般可用於啟動活動 啟動服務 以及傳送廣播等場景,這裡先對活動進行說明intent的一些作用。2 intent的用法大致可分為,顯式intent和隱式intent,本文針對顯示的intent進行簡單的說明。3 intent有多個建構函式...