为什么即使我关闭应用程序也想接收广播,为什么要取消注册广播接收器?

时间:2020-02-27 22:07:32

标签: android android-studio background broadcastreceiver

这听起来可能很愚蠢,但是。如果我关闭应用程序后注销了接收者的注册,我将无法接收到该BroadcastReceiver的意图,对吗?如果是这样,那会不会达到目的?

1 个答案:

答案 0 :(得分:1)

如果我在关闭应用程序后注销了接收者的注册,我将无法接收到该BroadcastReceiver的意图吗?

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

如果那样的话,那不是会失败吗?

不是真的。

您似乎担心应用程序何时“关闭”。动词“已关闭”在这种情况下不是很具体,但是一旦您的应用程序的UI移到后台,您的过程就可以在任何时间点终止。当您的进程终止时,您在registerReceiver()注册的所有接收者以及该过程中的所有其他内容都会消失。动态注册接收器仅在进程运行时有用。因此,无论您是否呼叫unregisterReceiver(),当您的应用“关闭”时,您很快都将无法接收广播。

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