廣播機制

一、分類

    分爲標準廣播(Normal broadcasts)和有序廣播(Ordered broadcasts)java

    標準廣播(Normal broadcasts):效率比較高,沒法攔截。全部的廣播接收器同時接收到。發送時調用sendBroadcast()方法android

    有序廣播(Ordered broadcasts):優先級高的先接收到廣播,能夠進行攔截,也能夠順序傳遞下去。發送時調用sendOrderedBroadcast()方法。安全

二、註冊

2.1 靜態註冊

    直接在AndroidManifest.xml進行註冊spa

    例如:.net

<receiver
            android:name=".broadcastTest.BootReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

2.2 動態註冊

    代碼中調用registerReceiver(receiver,intentFilter)進行註冊線程

    代碼中調用unregisterReceiver(receiver)進行註銷code

    receiver參數爲自定義receiver的對象,intentFilter參數爲IntentFilter類的對象orm

三、自定義廣播

3.1 標準廣播實現

    繼承BroadcastReceiver類,實現onReceive方法。而後進行註冊xml

    在onReceive方法中,不容許開啓線程,不能夠運行耗時操做,不然會進行報錯。因此接收器更多的是扮演一種能夠打開程序其餘組件的角色對象

3.2 有序廣播實現

    實現方式和標準廣播同樣。註冊的時候,設置priority屬性

    能夠在優先級高的receiver中,調用abortBroadcast();阻止廣播繼續往下傳遞。

3.3 本地廣播實現

    實現方式與標準廣播同樣。註冊和註銷的時候須要調用LocalBroadcastManager來對廣播

    注意:本地廣播是不能夠經過靜態註冊的方法來接受的

    本地廣播的優勢:

        a、能夠明確知道發送的廣播不會離開咱們的程序,所以不擔憂數據泄密。

        b、其餘程序沒法將廣播發送到咱們程序內部,所以不須要擔憂會有系統安全漏洞。

        c、發送本地廣播會比全局廣播更加高效。

四、Android中全部的系統廣播

    參考地址:https://blog.csdn.net/fengyuzhengfan/article/details/38439221

    系統全部的廣播,在sdk/platforms下面,全部的android版本中有一個data文件夾,文件夾下面有一個broadcast_actions.txt的文件。

    例如:sdk\platforms\android-28\data\broadcast_actions.txt

    官網中比較詳細的講解:

    https://developer.android.com/reference/android/content/Intent

五、一些比較好的blog

    https://www.kancloud.cn/bodhixu/broadcast/276505

相關文章
相關標籤/搜索