Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 即使不满足约束条件,周期性工作请求仍在运行_Android_Kotlin_Android Workmanager - Fatal编程技术网

Android 即使不满足约束条件,周期性工作请求仍在运行

Android 即使不满足约束条件,周期性工作请求仍在运行,android,kotlin,android-workmanager,Android,Kotlin,Android Workmanager,我正在使用WorkManager API(版本2.4.0)创建简单的定期运行任务。这是工人阶级 class BackupWorker( context: Context, workerParams: WorkerParameters ) : CoroutineWorker(context, workerParams) { override suspend fun doWork(): Result = coroutineScope { Log.i(TAG, "St

我正在使用WorkManager API(版本2.4.0)创建简单的定期运行任务。这是工人阶级

class BackupWorker(
    context: Context,
    workerParams: WorkerParameters
) : CoroutineWorker(context, workerParams) {
override suspend fun doWork(): Result = coroutineScope {
    Log.i(TAG, "Starting worker")

    makeNotification(
            "Preparing worker",
            applicationContext
    )

    sleep() //simulate long running task

    for(i in 0..20) {
        makeNotification(
                "Firing update $i",
                applicationContext,
                true
        )
        sleep()
    }


    makeNotification(
            "Worker complete",
            applicationContext
    )

    Log.i(TAG, "Finishing backup worker")

    Result.success()
 }
}
工作请求设置如下

Constraints constraints = new Constraints.Builder()
                            .setRequiredNetworkType(NetworkType.UNMETERED)
                            .setRequiresStorageNotLow(true).build();

PeriodicWorkRequest workRequest =
            new PeriodicWorkRequest.Builder(BackupWorker.class,
                    15, TimeUnit.MINUTES)
                    .setConstraints(constraints)
                    .build();

WorkManager.getInstance(context).enqueueUniquePeriodicWork("tag_worker",
            ExistingPeriodicWorkPolicy.REPLACE,
            workRequest);
操作系统正在正确拾取工作请求。但是,如果我在运行时关闭Wi-Fi,它不会停止并继续运行
doWork()
中的内容,这实际上与此API的整个用途相矛盾


这里少了什么东西吗?有什么想法吗?

什么是
sleep()
?如果您使用的是
coroutinewrker
,模拟延迟的正确方法是使用Coroutine的
delay
方法。感谢您的评论。我确实把它改成了延迟方法。当Wi-Fi关闭时,它仍在运行什么是
sleep()
?如果您使用的是
coroutinewrker
,模拟延迟的正确方法是使用Coroutine的
delay
方法。感谢您的评论。我确实把它改成了延迟方法。当Wi-Fi关闭时,它仍在运行