Я пытаюсь использовать 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
Что я делаю не так?
Спасибо.