Fix stucked downloads (#1392)

This commit is contained in:
nzoba 2022-08-28 20:55:20 +02:00 committed by GitHub
parent 0ff8a86fde
commit c209836e77
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -20,12 +20,12 @@ import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
import eu.kanade.tachiyomi.util.lang.plusAssign import eu.kanade.tachiyomi.util.lang.plusAssign
import eu.kanade.tachiyomi.util.system.acquireWakeLock
import eu.kanade.tachiyomi.util.system.connectivityManager import eu.kanade.tachiyomi.util.system.connectivityManager
import eu.kanade.tachiyomi.util.system.isConnectedToWifi import eu.kanade.tachiyomi.util.system.isConnectedToWifi
import eu.kanade.tachiyomi.util.system.isOnline import eu.kanade.tachiyomi.util.system.isOnline
import eu.kanade.tachiyomi.util.system.isServiceRunning import eu.kanade.tachiyomi.util.system.isServiceRunning
import eu.kanade.tachiyomi.util.system.localeContext import eu.kanade.tachiyomi.util.system.localeContext
import eu.kanade.tachiyomi.util.system.powerManager
import rx.subscriptions.CompositeSubscription import rx.subscriptions.CompositeSubscription
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
@ -111,9 +111,7 @@ class DownloadService : Service() {
/** /**
* Wake lock to prevent the device to enter sleep mode. * Wake lock to prevent the device to enter sleep mode.
*/ */
private val wakeLock by lazy { private lateinit var wakeLock: PowerManager.WakeLock
powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "DownloadService:WakeLock")
}
/** /**
* Subscriptions to store while the service is running. * Subscriptions to store while the service is running.
@ -149,6 +147,7 @@ class DownloadService : Service() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
startForeground(Notifications.ID_DOWNLOAD_CHAPTER, getPlaceholderNotification()) startForeground(Notifications.ID_DOWNLOAD_CHAPTER, getPlaceholderNotification())
wakeLock = acquireWakeLock(javaClass.name)
downloadManager.setPlaceholder() downloadManager.setPlaceholder()
runningRelay.call(true) runningRelay.call(true)
subscriptions = CompositeSubscription() subscriptions = CompositeSubscription()
@ -231,13 +230,15 @@ class DownloadService : Service() {
* Listens to downloader status. Enables or disables the wake lock depending on the status. * Listens to downloader status. Enables or disables the wake lock depending on the status.
*/ */
private fun listenDownloaderState() { private fun listenDownloaderState() {
subscriptions += downloadManager.runningRelay.subscribe { running -> subscriptions += downloadManager.runningRelay
if (running) { .doOnError { /* Swallow wakelock error */ }
wakeLock.acquireIfNeeded() .subscribe { running ->
} else { if (running) {
wakeLock.releaseIfNeeded() wakeLock.acquireIfNeeded()
} else {
wakeLock.releaseIfNeeded()
}
} }
}
} }
/** /**