如果我打算在应用程序处于后台时接收广播,我应该在哪里注销 BroadcastReceiver?

Where should I unregister a BroadcastReceiver if I intend on receiving broadcasts even when the app is in the background?

为了我的目的,只要应用程序是 运行(前景或背景),我就需要收听 CONNECTIVITY_CHANGE 广播。

如果我在 onDestroy() 方法中取消注册,如果我导航回第一个 activity,我将丢失接收器,因为第一个 activity 被带到顶部。

如果我在 onPause() 中取消注册,当应用程序在后台 运行 但没有被杀死时,我无法听到变化。

这会导致接收者在强行终止应用程序时泄漏意图。

我的案例的理想解决方案是什么?

提前致谢:)

如果应用程序被强制停止,无论您做什么,它都会泄漏。当您被强制停止时,您没有机会注销任何内容。

但本着您问题的更大精神 - 如果您需要一个地方来注册长期接收者并随后注销它,答案就在服务中。