前言
Google从Android8.0版本开始,对在清单文件中静态注册广播做了限制。
特殊广播:也是一种无序广播。特殊的广播:指那些操作比较频繁的广播事件类型。如:屏幕的开、关广播,电量的变化广播等等必须动态注册广播,这种特殊的广播事件在 AndroidManifest.xml 中注册是无效的!
概述
类似于新闻联播,不关心是否有人接收,都会发送。
广播接收者的两种注册方式:静态注册 和 动态注册。静态注册(分:安卓8.0之前和安卓8.0之后)
无序广播注意项
无序广播特点:
- 无法终止广播
- 无法修改数据
无序广播遇到的坑:
- 特殊广播必须动态注册
- 在安卓8.0后 发送无序广播,必须使用全类名方式
动态注册 接收无序广播
- 定义一个广播接收者(两种方式)
//方式一:动态注册一个广播接受者
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_SCREEN_OFF.equals(action)) {
Log.e("动态注册广播接收者", "屏幕 关闭 了");
} else if (Intent.ACTION_SCREEN_ON.equals(action)) {
Log.e("动态注册广播接收者", "屏幕 开启 了");
}
}
}