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