2015-08-14 103 views
1

我想我在这里看不到更大的图片,或者想不明白BroadcastReceiver的工作原理。在Android上取消注册BroadcastReceiver

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

现在,如果我想要该应用程序的作品,我明白我不能拨打unregisterReceiver()onPause()方法。但另一方面,如果我运行应用程序,有时会发生异常:

活动泄漏了最初在此注册的IntentReceiver。你是否错过了对unregisterReceiver()的调用?

那么,我在这里错过了什么?如果我必须拨打unregisterReceiver(),我的虚拟应用程序如何在每次通话中收到回拨?

谢谢

+0

如果您泄漏了在活动中注册的内存接收器,您可能只会收到此消息。如果您想在应用程序级别注册接收者,您需要在清单中执行此操作,或者在创建应用程序时执行此操作。 – dcow

回答

2

如何将我的虚拟应用程序在每次调用接收回,如果我有打电话给unregisterReceiver()?

有两种方法来建立一个BroadcastReceiver

  • registerReceiver(),这仅适用于将运行其他原因

  • <receiver>在清单

  • 过程有用

你的情况听起来像是使用01的情况。