中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android Intent詳解

發布時間:2020-04-06 17:00:21 來源:網絡 閱讀:637 作者:恐龍ID 欄目:移動開發

    (一)概念:Intent簡單來說就是啟動或切換Activity, Service或Broadcast三大組件的。Intent使應用程序代碼在運行時動態綁定成為可能,大大降低了不同代碼之間的耦合性。Intent最常用的方法是用來啟動一個Activity。Intent封裝了一系列他要執行的動作屬性,常見的有Action,Data,Type, Category, Extras。

    a: Action, Action屬性要完成的只是一個抽象的動作,這個動作具體由哪個組件(Activity或BroadcaseReceiver)來完成,Action這個屬性本身并不管。比如:Android提供的標準Action:Intent.ACTION_VIEW,他只表示一個抽象的查看操作,但具體查看什么,啟動哪個Activity他并不知道,這取決于Activity的<intent-filter../>配置,只要Activity的<intent-filter../>配置中包含了ACTION_VIEW他就有可能被啟動, 可以調用Intent的setAction()方法為Intent設置Action屬性的值。

    b: Data/Type, Dta屬性是用于向Action屬性提供操作的數據,Data屬性接收一個Uri對象,一個Uri對象通常通過如下形式的字符串來表示:

content://com.android.contacts/contacts/1
tel:123

     而Uri字符串總是滿足如下的格式

scheme://host:port/path

     Type屬性是用于指定Data屬性向Action提供的數據的格式,即指定該Data屬性所指定的Uri所對應的MIME類型,這種MIME類型可以是任意自定義的MIME類型,只要符合abc/xyz格式的字符串即可。

    Data屬性與Type屬性的關系比較微妙,這兩個屬性會互相覆蓋,比如:

-->如果為Intent先設置Data屬性后設置Type屬性,那么Data屬性將會被Type屬性所覆蓋。
-->如果為Intent先設置Type屬性后設置Data屬性,那么Type屬性則會被Data屬性所覆蓋。
-->要希望二者都同時存在,則應該調用Intent的setDataAndType()方法。

    c: Extra,Extra屬性相信您應該使用過許多遍了,他用于用于在多個Action之間進行數據的交換(Activity切換時的數據傳遞intent.putExtra(...)),該屬性值應該是一個Bundle對象,Bundle對象類似于一個Map對象可以存入多個key-value鍵值對。

    d: Category,  Category屬性是用于向Intent提供附加信息的屬性,可以是任意的字符串,如果一個Activity中同時設置了Action與Category那么,只有當二者同時滿足Activity才會被響應,可通過Intent的addCategory()方法來設置。

    說明:一個Intent對象只可以有一個Action但可以設置多個Category屬性,如果不指定Category屬性,系統會默認初始化一個Category屬性,其值為Intent.CATEGORY.DEFAULT常亮(常亮值為android.intent.category.DEFAULT組件)


    (二)顯式Intent與隱式Intent。

    • 顯式Intent通過指定Intent組件名稱來實現的,一般使用在知道目標組件名稱的前提下,指定需要轉向到的Activity,明確指定了要激活的組件,一般使用在應用程序內部。

    • 隱式Intent:通過Intent Filter來實現的,它一般用在沒有明確指出目標組件名稱的前提下。Android系統會根據隱式意圖中設置的動作(action)、類別(category)、數據(URI和數據類型)找到最合適的組件來處理這個意圖。一般是用于在不同應用程序之間

    對比:顯式Intent效率更高,因為系統可以直接精準的定位到需要激活的組件,缺點是耦合度高,例如:通過這種方法調用一些系統組件,很容易因為版本的更新,包名,類名,包結構的變化而導致程序崩潰;隱式Intent相對于效率較底下,因為每次意圖執行的時候系統都會搜索所有的intentfilter,來查看是否有匹配的內容,所以效率更底下。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五指山市| 灵宝市| 建阳市| 丰镇市| 芦溪县| 宁乡县| 南丰县| 庄河市| 波密县| 潍坊市| 北京市| 石城县| 乌审旗| 阜阳市| 合江县| 稷山县| 上饶县| 沅陵县| 白朗县| 历史| 忻州市| 淮南市| 马尔康县| 于田县| 甘德县| 永寿县| 金阳县| 文昌市| 长乐市| 正定县| 北京市| 南乐县| 阜南县| 琼中| 揭阳市| 虞城县| 玉屏| 革吉县| 历史| 龙口市| 贵州省|