BroadcastReceiver 简单介绍
广播的分类和使用场景
答案参考自:
分类
普通广播:通过
Context#sendBroadcast
发送,可并行处理系统广播:系统发送的广播,只需要注册广播接收器,并定义好action等待接收广播
有序广播:发出的广播会被接收器按照先后顺序进行接收,发送方式为sendOrderedBroadcast(intent); 广播接受者接收的顺序规则:按照Priority属性值排序,Priority相同者,动态注册的广播优先;
APP 应用内广播(Local Broadcast):由于广播可以跨进程的特性,导致应用可能不断收到来自其他应用的广播,或者别的应用接收到当前应用的私密广播;解决方法为使用应用内广播;也称局部广播,接收者和发送者同属于一个 APP。
使用方法
方法1:注册广播时设置 exported 属性为 false;在广播发送接收时,增加权限,用于权限验证;发送广播时执行广播接收器的包名
方法2:使用封装好的 LocalBroadcastManager,这种方式的广播只能动态注册,不能静态注册
使用场景
同一 App 内部的不同组件之间的消息通信(单个进程);
不同 App 之间的组件之间消息通信;
Android 系统在特定情况下与 App 之间的消息通信,如:网络变化、电池电量、屏幕开关等;
广播的两种注册方式的区别
静态注册
常驻系统,不受组件生命周期影响,即便应用退出,广播还是可以被接收,耗电、占内存。
动态注册
非常驻,跟随组件的生命变化,组件结束,广播结束。在组件结束前,需要先移除广播,否则容易造成内存泄漏。
BroadcastReceiver 简单介绍
https://luoyuy.top/posts/4c8cd102d397/