日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

什么是intent?

 wanwanstudy 2012-02-11

什么是Intent

Intent是一種運(yùn)行時(shí)綁定(runtime binding)機(jī)制,它能在程序運(yùn)行的過(guò)程中連接兩個(gè)不同的組件。通過(guò)Intent,你的程序可以向Android表達(dá)某種請(qǐng)求或者意愿,Android會(huì)根據(jù)意愿的內(nèi)容選擇適當(dāng)?shù)慕M件來(lái)響應(yīng)。比如,有一個(gè)Activity希望打開網(wǎng)頁(yè)瀏覽器查看某一網(wǎng)頁(yè)的內(nèi)容,那么這個(gè)Activity只需要發(fā)出WEB_SEARCH_ACTION請(qǐng)求給Android,Android 會(huì)根據(jù)Intent的內(nèi)容,查詢各組件注冊(cè)時(shí)的聲明的IntentFilter,找到網(wǎng)頁(yè)瀏覽器Activity來(lái)瀏覽網(wǎng)頁(yè)。

Android有三個(gè)基本組件--Activity,Service,BroadcastReceiver,它們都是通過(guò)Intent機(jī)制激活的,而不同類型的組件有不同的傳遞Intent的方式。

1.要激活一個(gè)新的Activity,或者讓現(xiàn)有的Activity執(zhí)行新的操作,可以通過(guò)調(diào)用Context.startActivity()或者Activity.startActivityForResult()方法。這兩個(gè)方法需要傳入的Intent參數(shù)也稱為Activity Action Intent,根據(jù)Intent對(duì)象對(duì)目標(biāo)Activity描述的不同,來(lái)啟動(dòng)與之匹配的Activity或傳遞信息。

2.要啟動(dòng)一個(gè)新的服務(wù)或者向一個(gè)已有的服務(wù)傳遞新的指令,調(diào)用Context.startService()方法或者調(diào)用Context.bindService()方法將調(diào)用此方法的上下文對(duì)象與Service綁定。

3.通過(guò)Context.sendBroadcast()、Context.sendOrderBroadcast()Context.sendStickBroadcast()這三個(gè)方法可以發(fā)送BroadcastIntent。BroadcastIntent發(fā)送后。所有已注冊(cè)的擁有與之相匹配的IntentFilterBroadcastReceiver就會(huì)被激活。這種機(jī)制廣泛運(yùn)用于設(shè)備和系統(tǒng)狀態(tài)變化的通知。一個(gè)常見(jiàn)的例子是,當(dāng)Android的電池電量過(guò)低時(shí),系統(tǒng)就會(huì)發(fā)送ActionBATTERY_LOW的廣播,接著任何可匹配該ActionIntentFilter注冊(cè)的BroadcastReceiver都會(huì)各自運(yùn)行自己自定義的處理代碼,比如關(guān)閉設(shè)備的WIFIGPS以節(jié)省電量。

Intent一旦發(fā)出,Android都會(huì)準(zhǔn)確的找到相匹配的一個(gè)或多個(gè)Activity、ServiceBroadcastReceiver作為響應(yīng)。所以不同類型的Intent消息不會(huì)發(fā)生重疊:BroadcastIntent消息只會(huì)發(fā)送給BroadcastReceiver,startActivity()傳遞的消息只能送給Activity,由startService()傳遞的Intent只能發(fā)送給service。

 

如何解析Intent

對(duì)于明確指出了目標(biāo)組件名稱的Intent,我們稱之為“顯式Intent”,對(duì)于沒(méi)有明確指出目標(biāo)組件名稱的Intent,我們稱之為“隱式Intent”。Android系統(tǒng)使用IntentFilter來(lái)尋找與隱式Intent相關(guān)的對(duì)象。

 

IntentFilter

應(yīng)用程序的組件為了告訴Android自己能響應(yīng)、處理哪些隱式Intent請(qǐng)求,可以聲明一個(gè)甚至多個(gè)IntentFilter。

<intent-filter>

<action android:name="android.Intent.Action.MAIN"/>

<category android:name="android.Intent.Category.LAUNCHER"/>

</intent-filter>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多