例如,如果使用 Android 生命周期感知组件,您可以在 onCreate 中处理接收器并在退出时自动取消注册接收器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getLifecycle().addObserver(new ReceiverLifecycleObserver(this, new IntentFilter(Intent.ACTION_BATTERY_CHANGED), new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive: intent=" + intent);
}
}));
}
static class ReceiverLifecycleObserver implements LifecycleObserver {
private final Context context;
private final IntentFilter filter;
private final BroadcastReceiver receiver;
public ReceiverLifecycleObserver(Context context, IntentFilter filter, BroadcastReceiver receiver) {
this.context = context;
this.filter = filter;
this.receiver = receiver;
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onStart(LifecycleOwner owner) {
context.registerReceiver(receiver, filter);
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onStop(LifecycleOwner owner) {
context.unregisterReceiver(receiver);
}
}