как упоминалось здесь, когда экран погаснет, будет вызываться onStop()
текущей Activity. Мне нужно проверить статус включения/выключения экрана, когда вызывается onStop()
моего Activity
. поэтому я зарегистрировал BroadcastReceiver
для этих действий (ACTION_SCREEN_ON
AND ACTION_SCREEN_OFF
), чтобы записать текущий статус включения/выключения (и они работают правильно, я зарегистрировался!).
но когда я выключаю экран и проверяю статус включения/выключения в onStop
, он говорит, что экран включен. Зачем? Я думаю, что приемник должен получить ACTION_SCREEN_OFF
до того, как onStop
вызывается так, что неправильно?
Как проверить статус включения/выключения экрана в onStop()?
Ответ 1
Вы можете попробовать использовать системную службу PowerManager для этой цели, вот пример и официальная документация (обратите внимание, что этот метод был добавлен в уровень API 7):
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();
EDIT:
isScreenOn() метод устарел API уровня 21. Вместо этого вы должны использовать isInteractive:
boolean isScreenOn = pm.isInteractive();
http://developer.android.com/reference/android/os/PowerManager.html#isInteractive()