我有一个小应用程序,在activity
启动时,on_create
注册broadcastreceiver
,然后退出(通过调用finish()
)
(旁注:令我惊讶的是,即使我的应用程序完成,广播接收器仍然收到了ACTION_SCREEN_OFF事件。我认为广播接收器将是未注册的。但我感到惊讶,因为它是什么我想要
现在,当屏幕响起时,onReceive
中的broadcastreceiver
事件会消失,我会执行操作。
然后我想知道:我是否必须unregister
broadcastreceiver
,因为我只想捕获一次事件,而当我没有unregister
时,不会broadcastreceiver
接收(并处理)该事件,直到我关闭电话?
如果是这样的话:我在哪里放unregister
代码。应用程序(activity
)已经不见了,所以我想不能把它放在那里。因此,唯一留下imo的地方是broadcastreceiver
本身,但unregister
本身broadcastreceiver
broadcastreceiver
似乎很奇怪。
如果没有:为什么我不必unregister
呢?
我在这里有点迷失,你可以看到......
答案 0 :(得分:1)
通常,您应该在onStart上注册Receiver,在onStop上注册unRegister,或者在onCreate和onDestroy上注册。您应该始终取消注册您的接收器,特别是如果您只希望它被触发一次。看看你的Logcat通常会告诉你你泄漏了一个接收器。
我不认为你的活动已经消失,它可能已经在生命周期中消失了,但是如果你没有取消注册接收器,你仍然会留在内存中,我认为你造成了内存泄漏。