《第一行代码Android》四大组件之广播

广播这一章东西不是很多,而且常用的功能,在项目中已经用过了,简单记录一下。

广播类型

标准广播

就是发送一个广播,所有应用都可以同时接受到

发送广播

        val intent = Intent("xxxx")
        intent.setPackage(packageName) //android 8.0之后要发送显式广播,所以要添加应用包名
        sendBroadcast(intent)

有序广播

就是发送一个广播,优先级高的应用先接受到,同时可以截断广播

优先级设置

AndroidManifest.xml中 <intent-filter android:priority="100">

发送有序广播

sendOrderedBroadcast(intent, null)

阻断广播

onReceive中调用abortBroadcast()

注册方式

静态注册

静态注册就是在AndroidManifest.xml中提前注册。然后实现receiver类就可以了。
一般常用的业务场景是,实现监听系统某广播自启动。
流程一般为如下:

  • 在AndroidManifest.xml声明对应权限
  • 静态注册广播
  • 在intent-filter中声明要监听的广播
            <intent-filter>
            xxx
            </intent-filter>
  • 实现对应receiver类

但是需要注意的一点是,这样操作会增大内存

动态注册

动态注册是在代码中注册,使用动态注册要记得取消注册。如果不取消注册坑可能会造成内存泄漏


        val  intentFilter = IntentFilter()
        intentFilter.addAction("xxx")
        val myReceiver = myReceiver()
        registerReceiver(myReceiver, intentFilter)
    inner class myReceiver: BroadcastReceiver() {

        override fun onReceive(context: Context?, intent: Intent?) {
            //xxx
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是李校长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值