如何在onStop()中检查屏幕开/关状态?

Soh*_*eil 24 android android-activity android-broadcast

提到这里,当屏幕熄灭,在onStop()当前活动的将被调用.我需要在调用onStop()my 时检查屏幕的开/关状态Activity.所以我已经注册了BroadcastReceiver这些动作(ACTION_SCREEN_ONAND ACTION_SCREEN_OFF)来记录当前的开/关状态(并且它们正常工作,我已经记录了!).
但当我关闭屏幕并检查其中的开/关状态时onStop,表示屏幕已打开.为什么?我认为接收器必须接收ACTION_SCREEN_OFF之前onStop被调用所以有什么问题?

Ale*_*nov 58

您可以尝试使用PowerManager系统服务,此处是示例和官方文档(请注意此方法已在API级别7中添加):

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();
Run Code Online (Sandbox Code Playgroud)

编辑:

isScreenOn()方法已弃用API级别21.您应该使用isInteractive:

boolean isScreenOn = pm.isInteractive();
Run Code Online (Sandbox Code Playgroud)

http://developer.android.com/reference/android/os/PowerManager.html#isInteractive()

  • 亚历山大!`BroadcastReceiver`在我想要的那一刻没有收到动作,但是这个做了:) (2认同)
  • 请注意,pm.isInteractive()的最小API为20 (2认同)