У меня есть активность, которая должна включать экран (если он отключен), когда он запущен. Поэтому в onCreate у меня есть:
this.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Используя это с помощью wakelock в приемнике Broadcasr, я могу заставить свою активность отображаться всякий раз, когда она запускается из широковещательного приемника.
Но проблема очень странная, вызовы жизненного цикла активности таким образом, onPause() и onResume сразу после запуска активности
- OnCreate
- OnStart
- onResume
- OnPause
- OnStop
- OnStart
- onResume
Таким образом, проблема заключается в запуске и повторении вызова дважды, причем при остановке также вызывается, я хочу реализовать некоторую логику в onStop(), но при таком поведении приложение не будет работать корректно.
Edit
Я нашел проблему только из-за флага FLAG_SHOW_WHEN_LOCKED. и когда устройство заблокировано. и это происходит только тогда, когда устройство заблокировано до запуска активности.
P.S Я использую диспетчер аварийных сообщений с широковещательным приемником, а затем запускаю активность из широковещательного приемника.