我的应用为每个Activity注册一个BroadcastReceiver,它检测SCREEN_OFF状态。但是如果我在onPause()中取消注册接收器,它就永远不会触发。我认为它在接收SCREEN_OFF广播之前被onPause()取消注册。在这种情况下,我应该在哪里取消注册接收器?
在清单中注册接收器应该适合我的应用程序的目的,但我读到某处无法以这种方式注册Intent.ACTION_SCREEN_OFF。
答案 0 :(得分:1)
在onDestroy()方法中取消注册接收器。因此,一旦活动被破坏,接收器将被取消注册。
答案 1 :(得分:0)
这样的接收器几乎没用,因为屏幕关闭通常会导致活动被暂停。这些对于像Service这样的后台组件很有用,它们希望在屏幕关闭时暂停。
也可以按需检测屏幕状态:
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();