BroadcastReceiver 接收系统广播
广播机制简介
Android中的每个程序都可以对广播进行注册,这样就只会受到自己关心的广播内容,这些广播可能是来自系统的,也可能是来自其他应用程序的,当然也可以发送广播。Android提供了一套完整的API允许程序自由地发送和接收广播。
Android中的广播主要可以分为两种类型:
- 标准广播
完全异步执行的广播,效率高,无法被截断
- 有序广播
同步执行的广播,接收有先后顺序,意味着先收到广播的BroadcastReceiver(BR)可以截断正在传递的广播
接收系统广播
根据自己的需要,可以自由地注册BR,这样当有相应广播发出时,BR就能够接收到。注册BR的方式一般有两种:在代码中注册
和在AndroidManifest.xml中注册
,前者也被称为动态注册
,后者也被称为静态注册
动态注册监听事件变化
新建BroadcastTest项目,我们尝试用动态注册的方式编写一个能够监听时间变化的程序,修改MainActivity
class MainActivity : AppCompatActivity() {
lateinit var timeChangeReceiver: TimeChangeReceiver
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val intentFilter = IntentFilter()
//加入动作,指定我们想要监听什么广播
intentFilter.addAction(