確認某個 BroadcastReceiver 是否已註冊,未註冊則註冊,保證廣播持續存在。
try {
unregisterReceiver(receiver);
// 無異常 → 已註冊,可選擇重新註冊或不動
} catch (IllegalArgumentException e) {
// 拋異常 → 未註冊,執行註冊
registerReceiver(receiver, filter);
}
unregisterReceiver 若接收器未註冊,拋出 IllegalArgumentException: Receiver not registered。onResume() 中執行上述邏輯(先註銷再註冊),保證單一註冊、生命周期同步。@Override
protected void onResume() {
super.onResume();
try { unregisterReceiver(receiver); } catch (IllegalArgumentException ignored) {}
registerReceiver(receiver, new IntentFilter("ACTION"));
}
@Override
protected void onPause() {
super.onPause();
try { unregisterReceiver(receiver); } catch (IllegalArgumentException ignored) {}
}
**捕獲 IllegalArgumentException 是判斷動態廣播註冊狀態的標準模式。**