首頁 要聞 中國 經(jīng)濟(jì) 財(cái)經(jīng) 品牌 點(diǎn)評 會展 綜合 | 設(shè)為首頁
中國品牌要聞網(wǎng)-傳遞資訊的價值打造品牌的影響
您現(xiàn)在的位置:首頁/農(nóng)林牧業(yè)/ 正文
針對不同具體的任務(wù)Intentfilter可分為多個filter
來源:
編輯:
時間:2022-07-22

      在Android中有四大組件,這些組件中有三個組件與Intent相關(guān),可見Intent在Android整個生態(tài)中的地位高度。Intent是信息的載體,用它可以去請求組件做相應(yīng)的操作,但是相對于這個功能,Intent本身的結(jié)構(gòu)更值得我們?nèi)パ芯俊?br />       為了能支持隱式intent,activity、service和broadcast receiver會包含1到多個intent filter。每個intent filter描述組件的可接收一組intent的能力。在intent filter中,說明了可接受的類型,以及不想要的intent。隱式的intent要想投遞到一個組件,只需通過組件的一個filter即可。組件把filter分成多個,是為了針對具體不同的任務(wù)。在sample中的Note pad示例中,NoteEditor activity有兩個filter,一個用于啟動并打開指定的note,另一個是為了打開新的空的note。


      一個intent filter是一個IntentFilter類的實(shí)例。但是,android系統(tǒng)必須在組件未啟動的情況下就知道它的能力,因此intent filter一般不會在java代碼中設(shè)置,而是在應(yīng)用的manifest文件中作為<intent-filter>元素的方式聲明。一個例外是,為broadcast receiver注冊動態(tài)的filter,可以調(diào)用Context.registerReceiver()方法,通過直接實(shí)例化IntentFilter對象創(chuàng)建。filter有三個平等的部分:action、data和category。隱式intent將測試這三個部分。一個intent要想投遞到一個組件,那么這三個測試都要通過才行。當(dāng)然如果組件有多個intent filter,可能一個intent沒有通過,但是通過了另外的一個,這樣也可以把intent投遞到組件。
      需要注意的是:如果一個Intent 可以通過多個activity或者filter的filter,那么用戶將會被詢問需要激活哪個組件。 如果一個都沒有的話,將會拋出異常?梢栽贗ntent Filter的節(jié)點(diǎn)里添加一個可選的標(biāo)簽。最高等級的組件會返回。 

免責(zé)聲明:本文僅代表作者個人觀點(diǎn),與本網(wǎng)無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí), 對本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時性本站不作任何保證或承諾, 請讀者僅作參考,并請自行核實(shí)相關(guān)內(nèi)容。當(dāng)事人(單位)如有異議,請參閱《刪帖說明》辦理。
中國品牌要聞網(wǎng)-傳遞資訊的價值打造品牌的影響
  • CopyRight@ 2005-2022 中國品牌要聞網(wǎng)
  • 工商注冊號 430122000189097
  • ICP備案許證:渝ICP備2022012785號