Как выполнить длительную задачу на андроид 12+?

По документации WorkManager может запускать задачи, которые долго выполняются (больше 10 минут). Для этого нужно вызвать setForeground(). Но в тоже время, версии андроид 12+ не дают запускать foreground, когда задача запускается по расписанию из background без активного приложения на переднем плане. Service в background убивают чуть ли не сразу после запуска.

Еще есть способы выполнить длительную задачу в фоне на старших андроидах?


Ответы (1 шт):

Автор решения: IR42

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

→ Ссылка