古詩詞大全網 - 成語查詢 - intent的作用是什麽?隱式intent是怎樣找到合適的目標組件的

intent的作用是什麽?隱式intent是怎樣找到合適的目標組件的

android當中顯式intent和隱式intent的區別

定義:

Intent定義:Intent是壹種在不同組件之間傳遞的請求消息,是應用程序發出的請求和意圖。作為壹個完整的消息傳遞機制,Intent不僅需要發送端,還需要接收端。

顯式Intent定義:對於明確指出了目標組件名稱的Intent,我們稱之為顯式Intent。

隱式Intent定義:對於沒有明確指出目標組件名稱的Intent,則稱之為隱式Intent。

說明:Android系統使用IntentFilter

來尋找與隱式Intent相關的對象。

詳細解釋:

顯式Intent直接用組件的名稱定義目標組件,這種方式很直接。但是由於開發人員往往並不清楚別的應用程序的組件名稱,因此,顯式Intent更多用於在應用程序內部傳遞消息。比如在某應用程序內,壹個Activity啟動壹個Service。

隱式Intent恰恰相反,它不會用組件名稱定義需要激活的目標組件,它更廣泛地用於在不同應用程序之間傳遞消息。

在顯式Intent消息中,決定目標組件的唯壹要素就是組件名稱,因此,如果妳的Intent中已經明確定義了目標組件的名稱,那麽妳就完全不用再定義其他Intent內容。

而對於隱式Intent則不同,由於沒有明確的目標組件名稱,所以必須由Android系統幫助應用程序尋找與Intent請求意圖最匹配的組件。

Android系統尋找與Intent請求意圖最匹配的組件具體的選擇方法

是:Android將Intent的請求內容和壹個叫做IntentFilter的過濾器比較,IntentFilter中包含系統中所有可能的待選組件。

如果IntentFilter中某壹組件匹配隱式Intent請求的內容,那麽Android就選擇該組件作為該隱式Intent的目標組件。

Android如何知道應用程序能夠處理某種類型的Intent請求呢?這需要應用程序在Android-Manifest.xml中聲明自己所含組件的過濾器(即可以匹配哪些Intent請求)。

壹個沒有聲明Intent-Filter的組件只能響應指明自己名字的顯式Intent請求,而無法響應隱式Intent請求。

而壹個聲明了IntentFilter的組件既可以響應顯式Intent請求,也可以響應隱式Intent請求。在通過和

IntentFilter比較來解析隱式Intent請求時,Android將以下三個因素作為選擇的參考標準。

Action

Data

Category

而Extra和Flag在解析收到Intent時是並不起作用的。