Как закрыть службу Android, которая добавляет системное наложение после сна и пробуждения телефона?

У меня есть служба Android, которая добавляет системное наложение (TYPE_SYSTEM_ALERT) в метод onCreate.

WindowManager.addView(mOverlayView, mLayoutParams);

и удаляет его в методе onDestroy, используя

WindowManager.removeView(mOverlayView);

При двойном касании представления оно удаляется с экрана путем закрытия службы с помощью

stopSelf();

Режим наложения поддерживает экран включенным с помощью

android:keepScreenOn="true"

Теперь, после того, как я нажму кнопку питания, чтобы перевести телефон в спящий режим, а затем снова нажму ее, чтобы разбудить его, после разблокировки оверлейный вид все еще открыт и находится поверх экрана.

Как я могу остановить службу, когда/после того, как я нажму кнопку питания и телефон перейдет в спящий режим? Я не хочу, чтобы наложенный вид был виден на экране после пробуждения и разблокировки телефона.


person Alex Vang    schedule 25.09.2015    source источник


Ответы (1)


Следите за ACTION_POWER_OFF и/или ACTION_POWER_ON трансляциями. Обратите внимание, что, насколько я знаю, вы можете зарегистрироваться только для тех, кто из вашей службы, через registerReceiver(), а не через свой манифест. Поскольку ваша служба уже запущена, это не должно быть проблемой. Когда вы получите трансляцию, остановите службу.

person CommonsWare    schedule 25.09.2015