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)

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

相关推荐
alexhilton8 小时前
Compose中初始加载逻辑究竟应该放在哪里?
android·kotlin·android jetpack
zh_xuan8 小时前
启动RN服务端口被占用
android·react native
Code-keys10 小时前
Android Codec2 Filter 算法模块开发指南
android·算法·音视频·视频编解码
y = xⁿ12 小时前
MySQL:count(1)与count(*)有什么区别,深分页问题
android·数据库·mysql
程序员陆业聪13 小时前
Android启动全景图:一次冷启动背后到底发生了什么
android
安卓程序员_谢伟光15 小时前
m3颜色定义
android·compose
麻辣璐璐16 小时前
EditText属性运用之适配RTL语言和LTR语言的输入习惯
android·xml·java·开发语言·安卓
北京自在科技16 小时前
谷歌 Find Hub 网页端全面升级:电脑可直接管理追踪器与耳机
android·ios·安卓·findmy
Rush-Rabbit16 小时前
魅族21Pro刷ColorOS16.0操作步骤
android
爪洼传承人17 小时前
AI工具MCP的配置,慢sql优化
android·数据库·sql