我应该在哪里取消注册Screen Off BroadcastReceiver?

时间:2013-07-03 03:18:13

标签: android broadcastreceiver onpause

我的应用为每个Activity注册一个BroadcastReceiver,它检测SCREEN_OFF状态。但是如果我在onPause()中取消注册接收器,它就永远不会触发。我认为它在接收SCREEN_OFF广播之前被onPause()取消注册。在这种情况下,我应该在哪里取消注册接收器?

在清单中注册接收器应该适合我的应用程序的目的,但我读到某处无法以这种方式注册Intent.ACTION_SCREEN_OFF。

2 个答案:

答案 0 :(得分:1)

在onDestroy()方法中取消注册接收器。因此,一旦活动被破坏,接收器将被取消注册。

答案 1 :(得分:0)

这样的接收器几乎没用,因为屏幕关闭通常会导致活动被暂停。这些对于像Service这样的后台组件很有用,它们希望在屏幕关闭时暂停。

也可以按需检测屏幕状态:

    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
    boolean isScreenOn = pm.isScreenOn();