1.广播机制简介
安卓中的每个应用程序都可以对自己感兴趣的广播进行注册,并且创建实例来对广播进行处理,这样该程序就只会接受到自己所关心的广播内容,这些广播可以是系统的,也可以是来自其他应用的,也可以是自己发出去的。
2.广播的类型
2.1标准广播
2.2有序广播
3.接受系统广播
3.1步骤:
1)注册该广播
2)写好处理该广播的类
3)如果该应用涉及到权限的设置,还要进行权限的声明
3.2注册广播分动态注册和静态注册
先说说动态注册广播:
注意:动态注册广播一定都要取消注册才行,这边我们在onDestroy()方法中通过调用unregisterReceiver()方法实现。
静态注册广播:
注意:
Exported属性表示是否允许这个广播接收器接受本程序以外的广播;
Enabled属性表示是否启用这个广播接收器。
总结:静态注册目的就是为了可以在开机只会就可以进行广播的处理,而动态注册不能,但是比较灵活,所以我们需要根据需求选择合适的注册方法。
3.3发送自定义广播
1)发送标准广播
核心代码:
里面的参数对应intent-filter的action android:name的值
2)发送有序广播
核心思想:给同个action的广播设置priority属性,越大越先进行,中途可以截断(abortBroadcast()方法)。
截断步骤:
4.使用本地广播
序言:前面我们发送和接受的广播全部属于系统全局广播,也就是说发出去的广播可以被其他任何应用程序接受到,并且我们也可以接受来自于其他任何应用程序的广播,这样就容易引起安全性问题,比如说我们发出去的广播携带重要数据的话,其他的应用程序可以进行接收,或者说其他应用程序不断给我们发垃圾广播,影响我们的性能。所以就引入了本地广播,其可以使得我们发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接受来自本地程序发出的广播。
具体实现步骤:
总结:
1)
2)
5.实例——使用广播实现强制下线功能
需求:发出一条广播,强制所有的活动死亡,然后返回到登陆界面
前提条件:每个活动都可以注册注销广播,且只是栈顶的活动才能进行接收广播
处理过程:
1)写好活动管理类
2)写好基础activity类,其有内部类(也就是广播类),且在onResume()和onPause()方法中进行注册和注销操作
3)在需要发送的广播的地方,发送广播且创建新的intent进行跳转首页
源码:
https://github.com/garryda/broadcast