Android四大组件之BroadcastReceiver详解

版权声明:本文出自门心叼龙的博客,转载请注明出处。 https://blog.csdn.net/geduo_83/article/details/86552438

1. 广播机制工作原理 ?

  • 1.1 首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象
  • 1.2 然后通过调用 Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把Intent对象以广播方式发送出去。 
  • 1.3 当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法

2. 注册BroadcastReceiver有两种方式,区别是什么?

        静态注册:永久广播,最后执行
        动态注册:临时广播,首先执行
        动态的在代码中先定义并设置好一个IntentFilter对象,然后在需要注册的地方调
        Context.registerReceiver()方法,如果取消时就调用Context.unregisterReceiver()方法。如果用动态方式注册的BroadcastReceiver的Context对象被销毁时,BroadcastReceiver,也就自动取消注册了,动态注册退出程序前要记得调用Context.unregisterReceiver()方法

在onStart中注册,在onStop中注销
在onResume中注册,在onPause注销

3. 广播接收器的生命周期?

当BroadcastReceiver在10秒内没有执行完毕,Android会认为该程序无响应。所以在BroadcastReceiver里不能做一些比较耗时的操作,否侧会弹出ANR(Application No Response)的对话框。如果需要完成一项比较耗时的工作,应该通过发送Intent给Service,由Service来完成。
 一个BroadcastReceiver,每接受一次就是产生一个新的接收器对象对象只有在被调用onReceive(Context, Intent)的才有效的,当从该函数返回后,该对象就无效的了,结束生命周期

4. UI事件监听器机制和广播事件处理机制的联系与区别:

    联系:都是基于事件监听处理机制

  • 4.1 UI事件处理机制是程序组件级别的,而广播事件处理机制是系统级别的
  • 4.2 UI事件监听器的注册只能在代码中实现,而广播放事件的监听器可以在代码中注册也可以在xml配置文件里面注册
  • 4.3 UI事件监听器关注的是事件是什么时候触发的,以及触发后做什么,而是我们广播事件监听器,关注的是广播的内容

5. LocalBroadcastManager特点?使用方法?

LocalBroadcastManager从名字上看就知道这个发送的广播只在本应用内传播,官方是这么介绍

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

注册广播:

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

发送广播:

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

注销广播:

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

猜你喜欢

转载自blog.csdn.net/geduo_83/article/details/86552438