我是否必须取消注册广播接收器(如果是,如何)?

时间:2015-07-29 10:25:43

标签: android broadcastreceiver

我有一个小应用程序,在activity启动时,on_create注册broadcastreceiver,然后退出(通过调用finish()

(旁注:令我惊讶的是,即使我的应用程序完成,广播接收器仍然收到了ACTION_SCREEN_OFF事件。我认为广播接收器将是未注册的。但我感到惊讶,因为它是什么我想要

现在,当屏幕响起时,onReceive中的broadcastreceiver事件会消失,我会执行操作。

然后我想知道:我是否必须unregister broadcastreceiver,因为我只想捕获一次事件,而当我没有unregister时,不会broadcastreceiver接收(并处理)该事件,直到我关闭电话?

如果是这样的话:我在哪里放unregister代码。应用程序(activity)已经不见了,所以我想不能把它放在那里。因此,唯一留下imo的地方是broadcastreceiver本身,但unregister本身broadcastreceiver broadcastreceiver似乎很奇怪。

如果没有:为什么我不必unregister呢?

我在这里有点迷失,你可以看到......

1 个答案:

答案 0 :(得分:1)

通常,您应该在onStart上注册Receiver,在onStop上注册unRegister,或者在onCreate和onDestroy上注册。您应该始终取消注册您的接收器,特别是如果您只希望它被触发一次。看看你的Logcat通常会告诉你你泄漏了一个接收器。

我不认为你的活动已经消失,它可能已经在生命周期中消失了,但是如果你没有取消注册接收器,你仍然会留在内存中,我认为你造成了内存泄漏。