为什么我想在应用程序关闭时接收广播时注销广播接收器?

Why Unregister Broadcast Receiver when I want to receive broadcast even when app is closed?

这听起来可能很傻,但是。如果我在我的应用程序关闭后取消注册接收器,我将无法接收到该 BroadcastReceiver 的意图,对吗?如果是这样,那不是破坏了目的吗?

If I unregister a receiver once my app is closed, I won't be able to receive intents to that BroadcastReceiver right?

是的,如果您通过 unregisteReceiver() 注销通过 registerReceiver() 注册的接收器,则该接收器将不再接收广播。

If so wouldn't that defeat the purpose?

不是真的。

您似乎担心您的应用何时 "closed"。动词 "closed" 在此上下文中不是很具体,但是一旦您的应用程序的 UI 移至后台,您的进程可以随时终止。当您的进程终止时,您使用 registerReceiver() 注册的任何接收者以及进程中的所有其他内容都会消失。动态注册接收器仅在您的进程为 运行 时有用。所以,不管你打不打unregisterReceiver(),当你的app是"closed"的时候,你很快就收不到广播了。

registerReceiver() 的主要替代方法是在清单中注册一个 <receiver>。但是,在 Android 的现代版本中,manifest-registered receivers cannot receive many broadcasts.