Как выполнить длительную задачу на андроид 12+?
По документации WorkManager может запускать задачи, которые долго выполняются (больше 10 минут). Для этого нужно вызвать setForeground(). Но в тоже время, версии андроид 12+ не дают запускать foreground, когда задача запускается по расписанию из background без активного приложения на переднем плане. Service в background убивают чуть ли не сразу после запуска.
Еще есть способы выполнить длительную задачу в фоне на старших андроидах?
Ответы (1 шт):
Foreground service launch restrictions
Consider using WorkManager to schedule and start expedited work while your app runs in the background. To complete time-sensitive actions that the user requests, start foreground services within an exact alarm.
Предлагается создавать exact alarm и при его срабатывании запускать foreground service/workmanager.
exact alarm одно из исключений, позволяющее запускать foreground из background: Exemptions from background start restrictions
Your app invokes an exact alarm to complete an action that the user requests.
Но для exact alarm требуется <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
https://developer.android.com/training/scheduling/alarms#exact