From 0778f34db76b08d905da32d44b926c30d9c2e039 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 19 Aug 2023 15:59:58 +0300 Subject: [PATCH] Limit TrackWorker parallelistm when device in use --- .../org/koitharu/kotatsu/tracker/work/TrackWorker.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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,