BroadcastReceiver 简单介绍

广播的分类和使用场景

答案参考自:

分类

  1. 普通广播:通过 Context#sendBroadcast 发送,可并行处理

  2. 系统广播:系统发送的广播,只需要注册广播接收器,并定义好action等待接收广播

  3. 有序广播:发出的广播会被接收器按照先后顺序进行接收,发送方式为sendOrderedBroadcast(intent); 广播接受者接收的顺序规则:按照Priority属性值排序,Priority相同者,动态注册的广播优先;

  4. APP 应用内广播(Local Broadcast):由于广播可以跨进程的特性,导致应用可能不断收到来自其他应用的广播,或者别的应用接收到当前应用的私密广播;解决方法为使用应用内广播;也称局部广播,接收者和发送者同属于一个 APP。

使用方法

  • 方法1:注册广播时设置 exported 属性为 false;在广播发送接收时,增加权限,用于权限验证;发送广播时执行广播接收器的包名

  • 方法2:使用封装好的 LocalBroadcastManager,这种方式的广播只能动态注册,不能静态注册

使用场景

  • 同一 App 内部的不同组件之间的消息通信(单个进程);

  • 不同 App 之间的组件之间消息通信;

  • Android 系统在特定情况下与 App 之间的消息通信,如:网络变化、电池电量、屏幕开关等;


广播的两种注册方式的区别

  • 静态注册

    常驻系统,不受组件生命周期影响,即便应用退出,广播还是可以被接收,耗电、占内存。

  • 动态注册

    非常驻,跟随组件的生命变化,组件结束,广播结束。在组件结束前,需要先移除广播,否则容易造成内存泄漏。


BroadcastReceiver 简单介绍
https://luoyuy.top/posts/4c8cd102d397/
作者
LuoYu-Ying
发布于
2022年5月24日
许可协议