第6章 广播机制
6.1 广播机制简介
Android中的每一个应用程序都可以对自己感兴趣的广播进行注册。这些广播可能来自于系统的,也可能来自于其他的应用程序。
广播的类型:
- 标准广播:是一种完全异步执行的广播,广播发出后,所有的BroadcastReceiver 可以几乎同时收到这条广播的信息。效率比较高,但是也是无法截断的。
- 有序广播:是一种同步执行的广播,同一时刻只能有一个BroadcastReceiver 能够接受到消息,有先后顺序。优先级高的BroadcastReceiver 先收到广播,并且前面的BroadcastReceiver 可以截断正在传递的广播。
6.2 接收系统广播
监听系统广播可以得到各种系统的状态消息。
6.2.1 动态注册监听时间变化
两种注册BroadcastReceiver 的方式:在代码中注册(动态注册),在AndroidManifest.xml中注册(静态注册)
如何创建一个BroadcastReceiver ?创建一个类,继承自BroadcastReceiver ,并重写父类的onReceive()方法。当广播到来时,onReceive()方法就会被执行,具体的逻辑就可以在这个方法中进行处理。
自己总结的步骤:
- 创建一个类继承自BroadcastReceiver 。创建这个类的实例,创建IntentFilter的一个实例,为intentFilter实例添加action(想监听什么样的广播,就添加对应的action)。
- 重写类中的onReceive()方法,处理逻辑的地方。
- 在需要使用的地方进行注册。
- 在使用结束后,一定要取消注册。
class MainActivity : AppCompatActivity() {
lateinit var timeChangeReceiver: TimeChangeReceiver
//延迟初始化
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val intentFilter=IntentFilter(