Remove WorkManager bug workaround
This commit is contained in:
@@ -23,7 +23,6 @@ import org.acra.sender.HttpSender
|
|||||||
import org.koitharu.kotatsu.core.db.MangaDatabase
|
import org.koitharu.kotatsu.core.db.MangaDatabase
|
||||||
import org.koitharu.kotatsu.core.os.AppValidator
|
import org.koitharu.kotatsu.core.os.AppValidator
|
||||||
import org.koitharu.kotatsu.core.prefs.AppSettings
|
import org.koitharu.kotatsu.core.prefs.AppSettings
|
||||||
import org.koitharu.kotatsu.core.util.WorkServiceStopHelper
|
|
||||||
import org.koitharu.kotatsu.core.util.ext.processLifecycleScope
|
import org.koitharu.kotatsu.core.util.ext.processLifecycleScope
|
||||||
import org.koitharu.kotatsu.local.data.LocalMangaRepository
|
import org.koitharu.kotatsu.local.data.LocalMangaRepository
|
||||||
import org.koitharu.kotatsu.local.data.PagesCache
|
import org.koitharu.kotatsu.local.data.PagesCache
|
||||||
@@ -73,7 +72,6 @@ class KotatsuApp : Application(), Configuration.Provider {
|
|||||||
setupDatabaseObservers()
|
setupDatabaseObservers()
|
||||||
}
|
}
|
||||||
workScheduleManager.init()
|
workScheduleManager.init()
|
||||||
WorkServiceStopHelper(workManagerProvider).setup()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun attachBaseContext(base: Context?) {
|
override fun attachBaseContext(base: Context?) {
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
package org.koitharu.kotatsu.core.util
|
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
|
||||||
import androidx.lifecycle.asFlow
|
|
||||||
import androidx.work.WorkInfo
|
|
||||||
import androidx.work.WorkManager
|
|
||||||
import androidx.work.WorkQuery
|
|
||||||
import androidx.work.impl.foreground.SystemForegroundService
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.delay
|
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
|
||||||
import kotlinx.coroutines.flow.map
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import org.koitharu.kotatsu.core.util.ext.processLifecycleScope
|
|
||||||
import javax.inject.Provider
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Workaround for issue
|
|
||||||
* https://issuetracker.google.com/issues/270245927
|
|
||||||
* https://issuetracker.google.com/issues/280504155
|
|
||||||
*/
|
|
||||||
class WorkServiceStopHelper(
|
|
||||||
private val workManagerProvider: Provider<WorkManager>,
|
|
||||||
) {
|
|
||||||
|
|
||||||
fun setup() {
|
|
||||||
processLifecycleScope.launch(Dispatchers.Default) {
|
|
||||||
workManagerProvider.get()
|
|
||||||
.getWorkInfosLiveData(WorkQuery.fromStates(WorkInfo.State.RUNNING))
|
|
||||||
.asFlow()
|
|
||||||
.map { it.isEmpty() }
|
|
||||||
.distinctUntilChanged()
|
|
||||||
.collectLatest {
|
|
||||||
if (it) {
|
|
||||||
delay(1_000)
|
|
||||||
stopWorkerService()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressLint("RestrictedApi")
|
|
||||||
private fun stopWorkerService() {
|
|
||||||
SystemForegroundService.getInstance()?.stop()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user