定义
广播接收器(BroadcastReceiver)是Android组件之一,用于监听并处理系统或应用内发出的广播事件,广播是一种“发布-订阅”机制,发送方通过Intent
广播事件,接收方通过注册BroadcastReceiver
监听特定事件。
方式 | 动态注册(代码中) | 静态注册(AndroidManifest.xml) |
---|---|---|
注册时机 | 运行时(如onCreate ) |
应用安装时(Manifest文件) |
生命周期 | 需手动unregister |
随应用启动自动生效 |
适用场景 | 临时事件(如应用内逻辑) | 长期监听(如网络状态、电量变化) |
安全性 | 默认仅当前应用可发送 | 可设置exported 属性控制外部调用 |
IntentFilter
BroadcastReceiver
监听的广播类型(如ACTION_WIFI_CHANGED
)。 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
广播类型
接收流程
sendBroadcast(Intent)
发送广播。 IntentFilter
匹配接收器。 onReceive()
中处理逻辑(需快速完成,避免ANR)。onReceive()
特性
内存管理
exported
,避免外部应用滥用。 onDestroy
)调用unregister
,防止内存泄漏。监听网络状态变化
// Manifest中静态注册 <receiver android:name=".NetworkChangeReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver>
应用内广播示例
// 发送广播 Intent intent = new Intent("com.example.CUSTOM_EVENT"); sendBroadcast(intent); // 动态注册接收器 BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // 处理逻辑 } }; registerReceiver(receiver, new IntentFilter("com.example.CUSTOM_EVENT"));
解答:
abortBroadcast()
终止后续传递,适用于需要拦截或处理结果的场景(如优先级高的逻辑)。 // 发送有序广播 sendOrderedBroadcast(intent, null);
解答:
exported
属性:若无需外部应用发送广播,设置为false
,避免被其他应用调用。 onDestroy
中unregister
,减少静态注册的长期占用。