广播机制

一、分类

    分为标准广播(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

相关文章
相关标签/搜索