PeriodicWork с enqueueUniquePeriodicWork не работает - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь использовать WorkManger, создавая периодический работник, который повторяется каждые 5 дней.

Я использую рабочие менеджеры версии 1.0.0 на устройстве Android 7 Huawei (API 24)

android.arch.work:work-runtime:1.0.0

Это код:

fun schedule() {
    val constraints: Constraints = Constraints.Builder().apply {
        setRequiredNetworkType(NetworkType.CONNECTED)
    }.build()

    val request = PeriodicWorkRequest
            .Builder(MyWorker::class.java, 5, TimeUnit.DAYS)
            .setConstraints(constraints)
            .build()

    WorkManager.getInstance()
            .enqueueUniquePeriodicWork(MyWorker.TAG, ExistingPeriodicWorkPolicy.KEEP, request)
}

MyWorker:

class MyWorker(appContext: Context, workerParams: WorkerParameters)
    : Worker(appContext, workerParams) {

    override fun doWork(): Result {
        return try {
            Thread.sleep(5000)
            Timber.i("success")
            Result.success()
        } catch (e: Exception) {
            Timber.e(e, "error")
            Result.failure()
        }
    }

Метод schedule() вызывается в onCreate() MainActivity.

Когда я устанавливаю приложение в первый раз, Worker запускается только один раз. Также в логах я вижу эту ошибку: CancellationException task was canceled

Что я делаю не так? Спасибо.

...