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