在 Android 上注销 BroadcastReceiver

Unregister BroadcastReceiver on Android

我想我没有看到更大的图景,或者没有理解 BroadcastReceiver 的工作原理。

让我们想象一个虚拟应用程序,每次用户接到电话时,该应用程序都会在 SD 卡上的一个文件中注册来电号码。为此,我只需创建一个 BroadcastReceiver,每次用户接到电话时都会启动 Service

现在,如果我想让该应用程序运行,我知道我不能在 onPause() 方法中调用 unregisterReceiver()。但另一方面,如果我 运行 应用程序有时会出现异常:

Activity has leaked IntentReceiver that was originally registered here. Are you missing a call to unregisterReceiver()?

那么,我在这里缺少什么?如果我必须调用 unregisterReceiver(),我的虚拟应用程序如何在每次调用时接收回调?

谢谢,

How can my dummy app receive callback at every call if I have to call unregisterReceiver()?

有两种设置方法 BroadcastReceiver:

  • registerReceiver(),仅对因其他原因运行

  • 的进程有用
  • <receiver> 在清单中

您的情况听起来像是使用 <receiver> 的情况。