我正在尝试使用WorkManger,创建一个定期的Worker,每5天重复一次。
我在华为Android 7设备上使用1.0.0版本的workmanagers(API 24)。
android.arch.work:work-runtime:1.0.0
This is the code:
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()
在MainActivity的onCreate()
中被调用。
当我第一次安装该应用程序时,Worker只运行了一次。在日志中我还看到这个错误。
【替换代码5
我做错了什么?