Android убивает мою службу переднего плана через 1 минуту после выключения экрана

Я разрабатываю приложение для плеера. По этой причине он использует службу переднего плана для управления воспроизведением. До недавнего времени служба была связана с моей деятельностью. Это больше не так. С тех пор некоторые определенные устройства (в основном Pixel 1/2/3) убивали мое приложение через 1 минуту после выключения экрана. Служба является службой переднего плана, ни к чему не привязанной. Почему устройство убивает его? Как только приложение будет исключено из списка приложений, оптимизированных для устройств, проблема будет решена.

Я не предоставляю код, потому что я просто пытаюсь понять, имеет ли смысл эта ситуация, и если да, то что я должен сделать, чтобы предотвратить это.

Кстати, приложение использует приемник для обработки сообщений Screen_ON/OFF. Вот как я вижу в логах, что метод onDestroy() службы плеера убивается ровно через 1 минуту после выключения экрана.


person user1026605    schedule 15.11.2018    source источник
comment
stackoverflow.com/a/48641229/9138395   -  person Nariman Ermekov    schedule 15.11.2018
comment
но я не вижу там пиксель   -  person Nariman Ermekov    schedule 15.11.2018
comment
Я не хочу предоставлять доступ к списку приложений, оптимизированных для устройства. Я спрашиваю, что может привести к тому, что Android убьет такое приложение на переднем плане.   -  person user1026605    schedule 16.11.2018
comment
Я думаю, что у меня была такая же проблема: stackoverflow.com/questions/51458421/   -  person Kwnstantinos Nikoloutsos    schedule 16.11.2018
comment
Решение в вашем потоке состояло в том, чтобы установить службу в качестве переднего плана, что уже имеет место здесь.   -  person user1026605    schedule 16.11.2018
comment
Привет, Вы нашли какое-либо решение или обходной путь для этого? У меня точно такая же проблема, но с устройствами Samsung. Служба переднего плана с уведомлением, все как положено, но ровно через минуту вызывается Service.onDestroy().   -  person Dmitriy Miyai    schedule 13.12.2019


Ответы (1)


что мне делать, чтобы предотвратить это?

Ключевой момент для поддержания службы в рабочем состоянии, как сказано в официальной документации:

Пока приложение находится на переднем плане, оно может свободно создавать и запускать как активные, так и фоновые службы.

Итак, мы можем сделать вывод, что сохранение работы на переднем плане и видимой для пользователя имеет очень минимальные шансы быть убитым. И для этого нам нужно знать, как Android получает представление о том, что этот процесс находится на переднем плане?

Вот критерии, при которых процесс считается активным:

  1. Он имеет видимую активность, независимо от того, запущена она или приостановлена.
  2. У него есть служба переднего плана.
  3. Другое приложение переднего плана подключается к приложению либо путем привязки к одной из его служб, либо путем использования одного из его поставщиков содержимого. Например, приложение находится на переднем плане, если к нему привязывается другое приложение:

- Служба обоев IME - Прослушиватель уведомлений - Голосовая или текстовая служба

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

Если процесс вашего приложения не соответствует ни одному из вышеперечисленных критериев, то это причина того, что ваша служба отключена.

Подробнее об этой теме можно прочитать здесь:

Служба переднего плана отключается Android

person Muhammad waris    schedule 15.11.2018
comment
Мой вопрос не о фоновой службе, а о службе переднего плана - person user1026605; 16.11.2018
comment
В случае службы переднего плана служба PRIORITY и количество запущенных служб переднего плана также имеют значение. Пожалуйста, проверьте обновленную ссылку. - person Muhammad waris; 16.11.2018