Android убивает мой сервис переднего плана через 1 минуту после выключения экрана - PullRequest
0 голосов
/ 15 ноября 2018

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

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

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

1 Ответ

0 голосов
/ 15 ноября 2018

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

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

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

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

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

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

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

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

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

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

Служба переднего плана убита Android

...