有序广播
sendOrderedBroadcast()方法接收两个参数,第一个参数仍然是 Intent,第二个参数是一个与权限相关的字符串,这里传入 null就行了。
广播传递的顺序
注册的时候广播设定的priority的优先级
终止广播
abortBroadcast();
本地广播
主要就是使用了一个LocalBroadcastManager来对广播进行管理
本地广播的优点
可以明确地知道正在发送的广播不会离开我们的程序,因此不需要担心机密数据泄漏的问题。
其他的程序无法将广播发送到我们程序的内部,因此不需要担心会有安全漏洞的隐患。
发送本地广播比起发送系统全局广播将会更加高效
` LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
1.发送本地广播
Intent intent = new Intent("com.example.broadcasttest. LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent); // 发送本地广播
2.注册本地广播
3.注销本地广播
localBroadcastManager.unregisterReceiver(localReceiver);
注意:本地广播是无法通过静态注册的方式来接收的
监听系统广播
1.网络变化
1. 添加网络权限
2. 继承广播接收者
3. 注册监听网络变化
自定义的类,继承至BroadcastReceiver
registerReceiver(networkChangeReceiver,intentFilter);
......
2.开机启动
1.添加权限
android.permission.RECEIVE_BOOT_COMPLETED
2.继承广播接收者
3.Manifest中静态注册
示例:强制下线
发送一条广播
接收到广播后finish掉所有的activity
设置AlertDialog的类型,保证在广播接收器中可以正常弹出
注意:
1.在广播中启动Activity需要添加 FLAG_ACTIVITY_NEW_TASK
2.需要把Dialog的类型设为 TYPE_SYSTEM_ALERT,不然它将无法在广播接收器里弹出
3.需要权限android.permission.SYSTEM_ALERT_WINDOW
[doc]
原文链接:https://www.f2er.com/note/422084.html