美文网首页
第二章 BroadcastReceiver专题

第二章 BroadcastReceiver专题

作者: 唔笛plk | 来源:发表于2018-12-21 14:49 被阅读0次

    一、广播接受是什么

    BroadcastReceiver本质上是一个全局的监听器,用于监听系统全局的Android的四大组件之一。
    (本质观察者模式)

    二、广播的种类

    1.无序广播

    normal broadcast 优点:完全异步,同一时刻被所有接收者接收,处理效率高
    缺点:接收者不能将处理结果传给下个个接受者,无法终止广播传送

    2.有序广播

    事先设置优先等级 <intent-filter>标签中设置等级 -1000~1000,数值越大,等级越高,按照优先级顺序传送,可以将处理结果发送给下一个接收者

    <receiver android:name=".service.NoticeCancelBroadcastReceiver">
                <intent-filter android:priority="100">
                    <action android:name="notice_cancel" />
                </intent-filter>
    </receiver>
    

    3.本地广播LocalBroadcastManager类

    • 使用它发送的广播将只在自身App内传播,因此你不必担心泄漏隐私数据
    • 其它App无法对你的App发送该广播,因为你的App根本就不可能接收到非自身应用发送的该广播,因此你不必担心有安全漏洞可以利用
    • 比系统的全局广播更加高效

    1.注册广播

    LocalBroadcastManager.getInstance(Context context).registerReceiver(BroadcastReceiver receiver, IntentFilter filter);
    

    2.取消广播

    LocalBroadcastManager.getInstance(this).unregisterReceiver(BroadcastReceiver receiver);
    

    3.发送广播

    LocalBroadcastManager.getInstance(Context context).sendBroadcast(Intent intent);
    

    三、广播的注册

    1.静态注册

    • 在AndroidManifest.xml文件中进行注册,静态注册是常驻型,应用程序关闭后,Receiver仍然可以接收到广播并且进行相应的处理
    receiver android:name=".service.NoticeCancelBroadcastReceiver">
                <intent-filter android:priority="100">
                    <action android:name="notice_cancel" />
                </intent-filter>
    </receiver>
    

    2.动态注册

    • 动态注册广播不是常驻型广播 ,可以跟随activity的生命周期。注意: 在activity结束前,移除广播接收器
    // 注册网络状态监听
    intentFilter = new IntentFilter();
    intentFilter.addAction(BroadcastUtils.CONNECTIVITY_CHANGE);
    registerReceiver(broadcastReceiver, intentFilter);
    
    // 取消注册
     unregisterReceiver(broadcastReceiver);
    

    3.动态注册于静态注册的区别

    • 动态注册的广播 永远要快于 静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低
    • 在同一个优先级下,谁先启动的快,谁将先接收到广播.

    四、源码角度分析广播机制

    1.本地广播的源码分析

    https://blog.csdn.net/u010687392/article/details/49744579

    2.系统广播源码分析

    http://codemx.cn/2017/12/25/AndroidOS007-Broadcast2/

    相关文章

      网友评论

          本文标题:第二章 BroadcastReceiver专题

          本文链接:https://www.haomeiwen.com/subject/hillkqtx.html