浅析Android Broadcast(广播)

2020-04-16  本文已影响0人  李岳锋

一,什么是广播?

广播, 做为Android的四大组件之一,被用于发送和接收,来自系统或其它app的消息。其设计原理,是基于观察者模式来设计的,即先订阅,后接收。广播消息,并不受限于某一个单一进程。因此,它可以用于跨进程间的通信,在多个App之间传递消息。

二,广播的分类。

根据广播的订阅(定义)方式和生命周期,我们可以将广播归纳为2种类型,即静态广播与动态广播。

  1. 创建继承自BroadcastReceiver的类,代码如下:
class MyBroadcastReceiver : BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
           // 当接收到广播时,这个方法会被调用,intent参数,包含了广播所附带的数据。
    }
}
  1. 在AndroidManifest.xml里面,配置刚刚定义的类。这个<receiver></receiver>标签,必须放在<application></application>标签中间,与<activity/>标签同层级。
<receiver android:name=".MyBroadcastReceiver"  android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
    </intent-filter>
</receiver>

  1. 创建继承自BroadcastReceiver的类,代码如下:
class MyBroadcastReceiver : BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
           // 当接收到广播时,这个方法会被调用,intent参数,包含了广播所附带的数据。
    }
}
  1. 创建BroadcastReceiver子类的实例,代码如下:
val br: BroadcastReceiver = MyBroadcastReceiver()
  1. 创建IntentFilter,添加订阅事件,并注册广播。
val filter = IntentFilter()
// 添加要订阅的广播事件
filter.addAction(Intent.ACTION_SCREEN_OFF)
// 注册广播
registerReceiver(br, filter)
上一篇下一篇

猜你喜欢

热点阅读