BroadcastReceiver 是 Android 中一种用于接收系统广播消息或应用内部广播的组件。它允许应用程序在系统或其他应用程序发出广播时获得通知,并采取相应的操作。以下是 Broadcast Receiver 的一些基本概念和用法:

1. BroadcastReceiver 的基本概念:
   - 注册方式: BroadcastReceiver 可以通过清单文件注册或者在代码中动态注册。
   - 广播类型: 有两种广播类型,一种是系统广播(例如电池电量改变、网络状态变化等),另一种是自定义广播,由应用程序发送和接收。

2. 清单文件注册:
   - 在 AndroidManifest.xml 文件中注册 BroadcastReceiver,指定接收的广播类型。
<receiver android:name=".MyReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="com.example.myapp.CUSTOM_ACTION" />
    </intent-filter>
</receiver>

3. 动态注册:
   - 在代码中使用 registerReceiver() 方法动态注册 BroadcastReceiver,并在合适的时机使用 unregisterReceiver() 方法取消注册。
MyReceiver myReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.BOOT_COMPLETED");
intentFilter.addAction("com.example.myapp.CUSTOM_ACTION");
registerReceiver(myReceiver, intentFilter);
// ...

// 取消注册
unregisterReceiver(myReceiver);

4. BroadcastReceiver 的实现:
   - 创建一个继承自 BroadcastReceiver 的类,并实现 onReceive() 方法,该方法中定义接收到广播后的处理逻辑。
public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action != null) {
            switch (action) {
                case Intent.ACTION_BOOT_COMPLETED:
                    // 处理开机广播
                    break;
                case "com.example.myapp.CUSTOM_ACTION":
                    // 处理自定义广播
                    break;
            }
        }
    }
}

5. 发送广播:
   - 应用程序内部使用 sendBroadcast() 方法发送自定义广播。
Intent customIntent = new Intent("com.example.myapp.CUSTOM_ACTION");
sendBroadcast(customIntent);

6. 权限和权限保护:
   - 对于一些敏感广播,可能需要申请相应的权限,以确保只有具有相应权限的应用程序才能接收广播。

以上是 Broadcast Receiver 的一些基础入门内容。请注意,动态注册的 BroadcastReceiver 需要在适当的生命周期内注册和取消注册,以避免内存泄漏。此外,广播接收器的处理逻辑应该尽量简单,以免影响应用程序的性能。深入理解 Broadcast Receiver 的用法可以使你更好地处理 Android 中的广播机制。


转载请注明出处:http://www.zyzy.cn/article/detail/15175/Android