diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt index 06aa47101..4d47e9564 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/work/TrackWorker.kt @@ -53,6 +53,7 @@ import org.koitharu.kotatsu.core.logs.TrackerLogger import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.util.ext.awaitUniqueWorkInfoByName import org.koitharu.kotatsu.core.util.ext.checkNotificationPermission +import org.koitharu.kotatsu.core.util.ext.powerManager import org.koitharu.kotatsu.core.util.ext.toBitmapOrNull import org.koitharu.kotatsu.core.util.ext.trySetForeground import org.koitharu.kotatsu.details.ui.DetailsActivity @@ -140,7 +141,7 @@ class TrackWorker @AssistedInject constructor( } private suspend fun checkUpdatesAsync(tracks: List): List { - val semaphore = Semaphore(MAX_PARALLELISM) + val semaphore = Semaphore(if (isDeviceInUse()) 1 else MAX_PARALLELISM) return channelFlow { for ((track, channelId) in tracks) { launch { @@ -289,6 +290,15 @@ class TrackWorker @AssistedInject constructor( .build() } + + private fun isDeviceInUse(): Boolean { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + return false + } + val powerManager = applicationContext.powerManager ?: return false + return !powerManager.isDeviceIdleMode + } + @Reusable class Scheduler @Inject constructor( private val workManager: WorkManager,