Exploring Background Execution Limits on Android Oreo — статья о том, какие ограничения применяет Android 8 к приложениям, работающим в фоне.
- Ограничения действуют только в отношении приложений собранных для API 26 и выше.
- Приложения не могут запускать службы, находясь в фоне. Будет выброшено исключение IllegalStateException.
- Приложения по-прежнему могут запускать foreground-службы, которые отображаются в панели уведомлений, и призванные службы.
- Приложения могут запускать службы после получения высокоприоритетного push-уведомления, но такая служба будет остановлена через пять минут.
- Приложение может запускать службы, находясь на экране, но если приложение будет свернуто, через некоторое время все ее службы будут завершены.
- Получатели неявных широковещательных сообщений (broadcast receiver), объявленные в манифесте, будут отключены за некоторыми исключениями (см. таблицу ниже).
Как обойти ограничения
- вместо фоновых служб можно использовать foreground-службы;
- для выполнения задач при возникновении определенных событий подойдет Job Scheduler;
- чтобы приложение могло реагировать на любые широковещательные сообщения получателей этих сообщений необходимо зарегистрировать динамически, с помощью метода registerReceiver().