Google 致力于为黑人社区推动种族平等。查看具体举措

重复性工作

您的应用有时可能需要定期运行某些任务。例如,您可能要定期备份数据、下载应用中的新鲜内容,或者上传日志到服务器。

PeriodicWorkRequest 用于这种需要定期执行的任务。

PeriodicWorkRequest 无法链接。如果您的任务需要链接任务,请考虑 OneTimeWorkRequest

您可以按照以下方式创建 PeriodicWorkRequest:

Kotlin

    val constraints = Constraints.Builder()
            .setRequiresCharging(true)
            .build()

    val saveRequest =
    PeriodicWorkRequestBuilder<SaveImageToFileWorker>(1, TimeUnit.HOURS)
        .setConstraints(constraints)
        .build()

    WorkManager.getInstance(myContext)
        .enqueue(saveRequest)

    

Java

    Constraints constraints = new Constraints.Builder()
            .setRequiresCharging(true)
            .build();

    PeriodicWorkRequest saveRequest =
            new PeriodicWorkRequest.Builder(SaveImageFileWorker.class, 1, TimeUnit.HOURS)
                      .setConstraints(constraints)
                      .build();

    WorkManager.getInstance(myContext)
        .enqueue(saveRequest);
    

示例中展示了一个重复间隔为一小时的定期工作请求。

重复间隔定义为重复之间的最短时间。工作器的确切执行时间取决于您在工作请求中使用的约束,也取决于系统进行的优化。

在示例中,PeriodicWorkRequest 还要求设备接通电源。在这种情况下,即使过了定义的一小时重复间隔,PeriodicWorkRequest 也将在设备接通电源时运行。

您可以像 OneTimeWorkRequest 一样观察 PeriodicWorkRequest 的状态。详细了解观察工作