广播(BroadcastReceiver)作为android四大组件之一,也是我们经常使用的主流功能,他主要是用来接收系统的广播消息和来自其他应用发来的广播消息
广播分为两种 普通广播和有序广播
普通广播: 通过Context.sendBroadcast()方法来发送。它是完全异步的。
有序广播: 通过Context.sendOrderedBroadcast来发送。所有的receiver依次执行
今天的笔记是说下广播的两种注册方式和使用方法
以开机广播为例
首先我们要写一个自定义的广播继承BroadcastReceiver()
class BootCompleteReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if(Intent.ACTION_BOOT_COMPLETED == intent.action){
//这里每到开机就会收到
}
}
}
第一种: 静态注册 在manifest文件里添加
<receiver
android:name=".faceserver.BootCompleteReceiver">
<intent-filter android:priority="1000">//设置优先级
<!--.接收启动完成的广播-->
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
这样就完成了
第二种:动态注册,可以写在MyApp里面
/**
* 注册广播
* Registration broadcast
*/
private fun initBroadcast() {
val filter = IntentFilter()
filter.addAction("android.intent.action.BOOT_COMPLETED")
registerReceiver(BootCompleteReceiver(), filter)
}
值得注意的是 动态注册在不使用的时候需要销毁
调用 unregisterReceiver();解除注册
两种注册方式的区别
1.静态注册的广播是常驻型广播,即应用程序关闭后,依然能够收到广播。
2.动态注册的广播是非常驻型广播,此时广播是跟随宿主的生命周期的,宿主不在了广播也就不在了。