Fix ForegroundServiceStartNotAllowedException on Android 12+

- Add setExpedited() to WorkManager requests missing it
- Fixes crash when starting foreground services from background
- Updated DownloadFactory, LocalStorageCleanupWorker, SuggestionsWorker, and TrackWorker schedulers
- Ensures compliance with Android 12+ foreground service restrictions
This commit is contained in:
VardanRattan
2025-05-31 05:55:38 +00:00
committed by Koitharu
parent e04a877310
commit 67b1e4e862
4 changed files with 4 additions and 0 deletions

View File

@@ -526,6 +526,7 @@ class DownloadWorker @AssistedInject constructor(
.setConstraints(constraints)
.addTag(TAG)
.setId(work.id)
.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
.build()
workManager.awaitUpdateWork(request)
}

View File

@@ -52,6 +52,7 @@ class LocalStorageCleanupWorker @AssistedInject constructor(
.setConstraints(constraints)
.addTag(TAG)
.setBackoffCriteria(BackoffPolicy.LINEAR, 10, TimeUnit.MINUTES)
.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
.build()
WorkManager.getInstance(context).enqueueUniqueWork(TAG, ExistingWorkPolicy.KEEP, request).await()
}

View File

@@ -415,6 +415,7 @@ class SuggestionsWorker @AssistedInject constructor(
.setConstraints(createConstraints())
.addTag(TAG)
.setBackoffCriteria(BackoffPolicy.LINEAR, 1, TimeUnit.HOURS)
.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
.build()
workManager
.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.UPDATE, request)

View File

@@ -289,6 +289,7 @@ class TrackWorker @AssistedInject constructor(
.setConstraints(constraints)
.addTag(TAG)
.setBackoffCriteria(BackoffPolicy.LINEAR, 30, TimeUnit.MINUTES)
.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
.build()
workManager
.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.UPDATE, request)