android API Guides學習--Intent and Intent Filters

Intent是一個消息傳遞類,同時能夠啓動一些組件android

做用:瀏覽器

1啓動一個activity組件。安全

經過Context類的 startActivity()/ startActivity ()方法啓動activity組件.
app

2啓動一個service組件框架

經過Context類的startService()方法啓動此組件,只能執行一次性操做(例以下載文件)。ide

經過Context類的 bindService()方法ui

3發送一條廣播spa

經過Context類的sendBroadcast(), sendOrderedBroadcast(), or sendStickyBroadcast()給別的組件發送消息。翻譯

Intent類型:3d

1顯式intent:

當你知道你想要啓動的組件時,指定將啓動組件的類名(需建立一個具體的組件)。例如後臺下載文件,啓動一個activity響應用戶行爲。

當你一使用一個顯示intent去啓動組件時,就在intent類中指定了詳細的intent屬性(除了Component name外,其餘屬性可不選)。

通常來講,顯式intent用來啓動特殊的activity與service。

2隱式intent:

沒有明確指定一個組件名稱。通常用於在app中調用另外一個app的組件。

當你使用隱式intent時,android系統去查找合適的組件來啓動。若是intent匹配intent filter,則啓動組件並把intent傳遞給intent類,若是有多個intent filter符合,則彈出對話框讓用戶選擇。

經過resolveActivity()方法可判斷是否查找到合適的組件。

intent filter是manifest文件中的語句,他描述了組件想要接收的各類類型的intent。

爲了確保你的app是安全的,使用顯式intent啓動一個service時不要給service聲明intent filter。使用隱式intent啓動service是有安全隱患的。由於你不能肯定哪一個service將響應intent,用戶也看不到是哪一個service在啓動。

建立一個intent類

intent類攜帶的主要信息:

Component name:

將要啓動的組件名。

這個屬性是可選擇的。

但若是你想建立一個明確的組件,那麼你要肯定組件名。(顯式intent)

若是你不肯定組件名,系統以intent其餘屬性決定啓動哪一個組件.(隱式intent)

當啓動service組件時,爲了確保你的app是安全的,最好要有明確的組件名。

你能夠經過intent構造方法,或者setComponent(), setClass(), setClassName()方法來肯定將要啓動的組件名。

Action:

經過一個字符串肯定將要執行的動做。例如查看或選擇。

你能夠在你的app中定義一個action屬性的字符串供你使用,可是你應該優先使用intent類或其餘框架類中已定義好的action屬性字符串。

ACTION_VIEW:當你有些信息須要給用戶顯示時,例如在map app中顯示地址

ACTION_SEND:用戶想要經過另外一個app分享數據。

你能夠經過intent類中setAction()方法或intent構造方法來設置action屬性。

若是想要定義一個action屬性字符串的話,不要忘了定義時把包名做爲字符串的前綴。

eg:

 1 static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL"; 

Data:

URI類引用的數據行使MIME類型數據的職能。提供的數據的類型通常由intent的action決定。

除了URI以外,在建立intent類很是重要事情是指定數據類型(MIME type).

設置URI類型,用setData()方法,設置MIME類型,用setType()方法。兩種都設置用setDataAndType()方法.(intent類)

Category:

給intent以字符串的形式添加額外信息。

大部分intent不須要添加category。

CATEGORY_LAUNCHER:activity是一個初始的任務activity而且他被列在應用程序管理器上。

CATEGORY_BROWSABLE:目標activity容許瀏覽器經過引用連接啓動他來顯示數據

經過addCategory()方法添加Category屬性

Extras:

經過鍵值對的形式保存額外的信息來完成要求的功能,就好像一些動做和特定的數據URI對應,一些動做和特定的extras對應。

經過putExtra()方法添加extras.

自定義Extra字符串。

 1 static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS"; 

Flags:

定義瞭如何啓動activity以及如何對待他。

 

翻譯自android 官網API Guide。

相關文章
相關標籤/搜索