关于Android广播的小结

Android的广播从系统的角度来讲分为全局广播和本地广播:

全局广播就是系统或一个应用发出,是向整个Android系统发出的,所有的应用都会接收到此广播,全局广播又分为标准广播和有序广播;

本地广播是为了解决数据安全而引入,即本地广播只能在应用内部传播,不会传播到系统,相比之下,更安全,效率更高。

提到广播就必须有广播接收器,不然没有接收广播信息的接收器,发出广播也就没有意义了。广播接收器可以对自己要处理的广播进行注册,这样在有相应的广播发出之后就可以收到广播来处理对应的事件。注册广播的方式有两种,静态注册(即在Manifest.xml中注册)和动态注册(在代码中注册)。下面用一幅图片标识。

接下来我们实现一个监听网络变化的功能:当网络变化时系统会发出一个广播,这时候我们只需要进行注册接收就行,这是一个全局的标准的广播。

静态注册方式:

1.编写广播接收器

2.在Manifest.xml中注册要接收的网络变化信息

//1.接收网络变化的广播接收器
class ReceiveNetBroadcastByStatic: BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        //打印接收到的action
        Log.i("staticRegister","Received action: ${intent?.action}")
        Toast.makeText(context,"网络改变", Toast.LENGTH_SHORT).show()
    }
}
<!--2.静态注册信息-->
<receiver android:name=".broadcast.ReceiveNetBroadcastByStatic">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            </intent-filter>
        </receiver>

运行之后,手动的关闭网络,打印的日志如下:

然后我们把上面的静态的注册改为动态注册的广播,并接收:

private var receiveNetBroadcastByStatic: ReceiveNetBroadcastByStatic? = null
    override fun onCreate(savedInstanceState: Bundle
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值