как упоминалось здесь, когда экран погаснет, будет вызываться 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()