#Service #Background



Pitfalls of a foreground Service lifecycle от Maciej Witowski



Android 8.0 ввел новые правила для приложений - по максимум показывать пользователю активность в фоне и управлению по ее запуску отдавать системе (JobScheduler). Также ужесточением политики было необходимость в этом году всем приложением поддерживать minSdk = Android 8.0.



Одним из больших изменений, которые пришлось делать разработчикам при адаптации своих приложений - уход от обычных Service в сторону Foreground Service либо JobScheduler.



Основные правила при работе с Foreground Service:

1️⃣ Не вызывайте Service.startForeground() слишком рано

2️⃣ Вызывайте Service.stopSelf() после startForeground()

3️⃣ Останавливайте Service только из него самого



Нарушение правил карается падением приложения по принципам работы на Android 8.0+ 😢



Соблюдение этих правил сводиться к тому, что запуск Context.startForegroundService() всегда должен сводиться в обязательному наличию вызова Service.startForeground().