android 四大组件—BroadcastReceiver

无序广播(普通广播) 和 有序广播(Ordered Broadcast)

1. 无序广播(普通广播)

Intent intent = new Intent("com.example.MY_BROADCAST");

sendBroadcast(intent);

2. 有序广播

Intent intent = new Intent("com.example.MY_ORDERED_BROADCAST");

sendOrderedBroadcast(intent, null); // 第二个参数是权限

系统会根据接收者的 priority 从高到低依次调用 onReceive()

中断广播:abortBroadcast();

修改结果:setResultExtras(Bundle);

获取前一个接收者的结果:getResultExtras(true)。

静态注册(Manifest 中声明)

复制代码
<receiver
    android:name=".BootReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

class BootReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
            // 开机完成
        }
    }}

动态注册(代码中注册)

val receiver = object : BroadcastReceiver() {

override fun onReceive(context: Context, intent: Intent) {

// 处理广播

}}

// 注册registerReceiver(receiver, IntentFilter("MY_ACTION"))

// 解绑(必须)unregisterReceiver(receiver)

功能:接收并响应广播(系统或应用发出)。

相关推荐
逐光老顽童2 天前
Java 与 Kotlin 混合开发避坑指南:30 个真实案例实录
android·kotlin
爱勇宝2 天前
鸿蒙生态的下半场:开发者不只要能开发,还要能赚钱
android·前端·程序员
Yeyu3 天前
刷新一帧的艺术:invalidate / postInvalidate / postInvalidateOnAnimation全解析
android
潘潘潘3 天前
Android OTA 升级原理和流程介绍
android
plainGeekDev3 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
plainGeekDev3 天前
getter/setter → Kotlin 属性
android·java·kotlin
YXL1111YXL3 天前
Handler 消息回收与协程异步执行的时序陷阱
android
恋猫de小郭3 天前
KMP / CMP 鸿蒙版本 Beta 发布,他有什么特别之处?
android·前端·flutter
三少爷的鞋3 天前
Android 协程并发控制:别动线程池,控制好并发语义就够了
android
weiggle4 天前
第七篇:状态提升与单向数据流——架构设计的核心
android