0

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

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

4

2 回答 2

1

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

于 2013-07-03T03:23:52.220 回答
0

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

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

    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
    boolean isScreenOn = pm.isScreenOn();
于 2013-07-03T03:42:28.840 回答