Limit TrackWorker parallelistm when device in use

pull/463/head
Koitharu 3 years ago
parent bc488a6878
commit 0778f34db7
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -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<TrackingItem>): List<MangaUpdates> {
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,

Loading…
Cancel
Save