Make workers non-cancellable

pull/1061/head
Alex Baker 5 years ago
parent 640412314c
commit fca4a721da

@ -1,20 +1,24 @@
package org.tasks.injection package org.tasks.injection
import android.content.Context import android.content.Context
import androidx.work.CoroutineWorker import androidx.work.Worker
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import kotlinx.coroutines.runBlocking
import org.tasks.analytics.Firebase import org.tasks.analytics.Firebase
import timber.log.Timber import timber.log.Timber
abstract class BaseWorker( abstract class BaseWorker(
internal val context: Context, internal val context: Context,
workerParams: WorkerParameters, workerParams: WorkerParameters,
internal val firebase: Firebase) : CoroutineWorker(context, workerParams) { internal val firebase: Firebase
) : Worker(context, workerParams) {
override suspend fun doWork(): Result { override fun doWork(): Result {
Timber.d("%s.doWork()", javaClass.simpleName) Timber.d("%s.doWork()", javaClass.simpleName)
return try { return try {
run() runBlocking {
run()
}
} catch (e: Exception) { } catch (e: Exception) {
firebase.reportException(e) firebase.reportException(e)
Result.failure() Result.failure()

@ -2,17 +2,21 @@ package org.tasks.jobs
import android.content.Context import android.content.Context
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import kotlinx.coroutines.runBlocking
import org.tasks.analytics.Firebase import org.tasks.analytics.Firebase
import org.tasks.injection.BaseWorker import org.tasks.injection.BaseWorker
abstract class RepeatingWorker internal constructor( abstract class RepeatingWorker internal constructor(
context: Context, context: Context,
workerParams: WorkerParameters, workerParams: WorkerParameters,
firebase: Firebase) : BaseWorker(context, workerParams, firebase) { firebase: Firebase
) : BaseWorker(context, workerParams, firebase) {
override suspend fun doWork(): Result { override fun doWork(): Result {
val result = super.doWork() val result = super.doWork()
scheduleNext() runBlocking {
scheduleNext()
}
return result return result
} }

@ -210,7 +210,7 @@ class WorkManagerImpl constructor(
.build() .build()
@SuppressLint("EnqueueWork") @SuppressLint("EnqueueWork")
private suspend fun enqueueUnique(key: String, c: Class<out CoroutineWorker?>, time: Long) { private suspend fun enqueueUnique(key: String, c: Class<out Worker?>, time: Long) {
val delay = time - DateUtilities.now() val delay = time - DateUtilities.now()
val builder = OneTimeWorkRequest.Builder(c) val builder = OneTimeWorkRequest.Builder(c)
if (delay > 0) { if (delay > 0) {

Loading…
Cancel
Save