BroadcastReceiver的8大常用系统广播
在 Android 开发中,BroadcastReceiver 用于监听系统和应用发出的广播事件。以下是 8 个常用的系统广播及其典型用途和注意事项:
1. 开机完成广播
Action: ACTION_BOOT_COMPLETED
用途:监听设备启动完成事件,常用于初始化后台服务或定时任务。
注意:
需声明权限
示例注册方式(静态注册):
2. 网络状态变化广播
Action: ACTION_CONNECTIVITY_CHANGE
用途:监听网络连接状态(如 Wi-Fi/移动数据切换)。
注意:
Android 7.0+ 要求动态注册,无法静态接收此广播。建议使用 ConnectivityManager 主动查询网络状态。
动态注册示例:
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(networkReceiver, filter);
3. 电量变化广播
Action: ACTION_BATTERY_CHANGED
用途:监听电量变化(如低电量警告、充电状态)。
注意:
只能通过动态注册接收(系统不允静态注册)。通过 Intent 携带电量百分比、充电状态等信息。
示例代码:
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryReceiver, filter);
4. 屏幕状态广播
Actions:
ACTION_SCREEN_ON(屏幕点亮)ACTION_SCREEN_OFF(屏幕关闭)
用途:优化资源使用(如屏幕关闭时暂停动画)。
注意:必须动态注册,静态注册无效。
5. 时区变化广播
Action: ACTION_TIMEZONE_CHANGED
用途:处理国际化时间相关的逻辑(如日历应用)。
注意:可能需要重新初始化时间相关模块。
6. 短信接收广播
Action: ACTION_SMS_RECEIVED
用途:拦截或处理短信(如验证码自动填充)。
注意:
需权限
7. 应用安装/卸载广播
Actions:
ACTION_PACKAGE_ADDED(应用安装)ACTION_PACKAGE_REMOVED(应用卸载)
用途:监控应用安装状态(如安全类应用)。
注意:需添加 到 IntentFilter。
静态注册示例:
8. 耳机插拔广播
Action: ACTION_HEADSET_PLUG
用途:处理耳机插拔事件(如音乐播放器暂停/恢复)。
注意:只能动态注册。
示例代码:
IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
registerReceiver(headsetReceiver, filter);
注意事项
动态注册的 Receiver 需在 onDestroy() 中及时注销,避免内存泄漏。Android 8.0+ 对隐式广播(Implicit Broadcast)限制严格,部分系统广播需改用动态注册。后台执行限制:避免在 Receiver 中执行耗时操作,建议使用 JobScheduler 或 WorkManager。