四大组件之广播

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

 

posted @ 2017-09-15 18:38  鹏达君  阅读(268)  评论(0编辑  收藏  举报