我正在尝试使用WorkManager创建一个重复周期为5天的定期Worker。
我在华为安卓7设备(API 24)上使用了1.0.0版本的WorkManager。
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)
}
我的工作者:
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()
}
}
在MainActivity的onCreate()
中调用了schedule()
方法。
第一次安装应用程序时,Worker仅运行一次。同时在日志中看到以下错误:CancellationException task was canceled
我做错了什么? 谢谢。