Trabajo recurrente

En algunas ocasiones, tu aplicación podría requerir que determinadas tareas se ejecuten de manera periódica. Por ejemplo, quizás quieras crear copias de seguridad de tus datos, descargar contenido actualizado en tu app o subir registros a un servidor de manera periódica.

Usa PeriodicWorkRequest para las tareas que necesitas que se ejecuten de manera periódica.

PeriodicWorkRequest no se puede encadenar. Si necesitas encadenar tu tarea, quizás debas usar OneTimeWorkRequest.

Puedes crear una PeriodicWorkRequest de la siguiente manera:

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);
    

En el ejemplo, se muestra una solicitud de trabajo periódico con un intervalo de repetición de una hora.

El intervalo de repetición corresponde al tiempo mínimo entre repeticiones. El tiempo exacto en que se ejecutará un trabajador dependerá de las limitaciones que uses en la solicitud de trabajo y de las optimizaciones que lleve a cabo el sistema.

En el ejemplo, PeriodicWorkRequest también requiere que esté enchufado el dispositivo. En este caso, incluso si transcurre el intervalo de repetición definido de una hora, solo se ejecutará PeriodicWorkRequest cuando el dispositivo esté enchufado.

Puedes ver el estado de PeriodicWorkRequests de la misma manera que para OneTimeWorkRequests. Obtén más información sobre la observación del trabajo.