Descripción general de WorkManager en los componentes de la arquitectura de Android

Android WorkManager podría considerarse como una biblioteca en segundo plano que se emplea para ejecutar tareas en segundo plano que deberían ejecutarse de forma garantizada, pero no necesariamente de forma inmediata. Con WorkManager pondremos en cola nuestro respaldo incluso cuando la aplicación no se esté ejecutando e incluso cuando el dispositivo se reinicie por un par de razones. WorkManager también nos permite definir las restricciones necesarias para ejecutar la tarea, por ejemplo, Wi-Fi. o la disponibilidad de la batería antes de iniciar la tarea en segundo plano. 

Android WorkManager es una de las partes de Android Jetpack (un conjunto de bibliotecas para guiar a los desarrolladores a escribir aplicaciones de gran calidad) y es uno de los componentes de la arquitectura de Android (colección de componentes que ayudan a los desarrolladores a diseñar aplicaciones robustas, comprobables y fáciles de mantener) .

¿Cuándo usar WorkManager mientras se trabaja con procesamiento en segundo plano?

A medida que el sistema operativo Android evolucionó mucho a lo largo de los años, se imponen ciertas restricciones en el proceso de fondo, todo se ha hecho para optimizar el consumo de batería y hacer uso de los recursos del dispositivo de una manera óptima y juiciosa. Cada nueva versión de Android, desde Android Marshmallow (API 23), ha agregado algunas restricciones y continúan llegando hasta el final. Puede consultar los detalles exactos en un equivalente en la guía para desarrolladores de Android. Por lo tanto, es importante decidirse por el enfoque de segundo plano más simple para su aplicación según sus necesidades. Mencionemos rápidamente los casos en los que preferiría usar WorkManager. Android WorkManager suele ser una biblioteca de fondo ideal para usar cuando su tarea:

  1. No llega a ejecutarse en un momento seleccionado
  2. Puede ser diferido para ser ejecutado
  3. Está obligado a ejecutarse incluso después de que la aplicación se elimine o el dispositivo se reinicie o se apague permanentemente
  4. Tiene que cumplir con restricciones como la cobertura de la red o la disponibilidad de la red antes de la ejecución

El ejemplo más simple de esto puede ser cuando su aplicación necesita cargar una gran cantidad de datos de usuario en el servidor. ¡Esto requiere que los desarrolladores residan y usen WorkManager, ya que es lo mejor que se requiere!

¿Pero por qué?

  1. No es necesario que los resultados se reflejen de inmediato en su aplicación de Android (se permite un ligero retraso)
  2. Los datos deben cargarse incluso cuando comienza la carga y, por lo tanto, el usuario elimina la aplicación para utilizar otra aplicación o decide mantener el teléfono en reposo, y
  3. La red y la batería deben estar disponibles para cargar datos en el servidor.

Paso n.º 1: agregue el Administrador de trabajo a Android build.gradle

Agregar un administrador de trabajo es simple, solo incluye las siguientes líneas en tu nivel de proyecto y ¡listo!

Java

dependencies
{
    def work_version = "2.5.0"
 
        // (Java only)
        implementation "androidx.work:work-runtime:$work_version"
 
        // Kotlin + coroutines
        implementation "androidx.work:work-runtime-ktx:$work_version"
 
        // optional - RxJava2 support
        implementation "androidx.work:work-rxjava2:$work_version"
 
        // optional - GCMNetworkManager support
        implementation "androidx.work:work-gcm:$work_version"
 
        // optional - Test helpers
        androidTestImplementation "androidx.work:work-testing:$work_version"
 
        // optional - Multiprocess support
        implementation "androidx.work:work-multiprocess:$work_version"
}

Paso #2: Definición del trabajo

Necesitamos crear un trabajo como el mencionado en el ejemplo anterior, y luego necesitaremos extender la clase Worker anulando el método doSomeWork() . El siguiente ejemplo muestra cómo agregar un trabajador a la aplicación de Android que carga datos (principalmente imágenes) a un servidor.

Java

public class WorkManagerOverviewGfg extends Worker {
    public WorkManagerOverviewGfg(@NonNull Context context,
                                  @NonNull WorkerParameters params)
    {
        super(context, params);
    }
    @Override public Result doSomeWork()
    {
 
        // Do the work here--in this case, upload the data.
        uploadData();
        return Result.success();
    }
}

 
El método Result mencionado anteriormente (devuelto del Código) le dice al servicio del sistema si el trabajo/trabajo especificado salió bien o no. Si devuelve un error, también proporciona el método para volver a intentar el trabajo o no.

Paso #3: Creación de una solicitud de trabajo

Una vez que haya definido su trabajo, ahora debe programarlo utilizando el servicio WorkManager, para que el servicio se ejecute. ¡También puede programarlo para que se ejecute programáticamente durante un intervalo o varias veces, o hacer que se ejecute solo una vez! ¡El siguiente fragmento de código lo guía sobre cómo crear un servicio que ejecute su trabajo solo una vez!

Java

WorkRequest uploadRequestGfg = new OneTimeWorkRequest.Builder(WorkManagerOverviewGfg.class).build();

Finalmente, Paso #4: Enviar la WorkRequest al sistema para que se lleve a cabo

Una vez que haya creado con éxito una solicitud de trabajo, el último paso que debe realizar es enviar la solicitud de trabajo creada a WorkManager mediante el método de puesta en cola(), y luego simplemente ver que su trabajo se realiza mediante WorkManager. El fragmento de código a continuación lo guía a través de los pasos necesarios para realizar este paso final

Java

WorkManager.getInstance(getContext).enqueue(uploadRequestGfg);

 ¡Eso es todo! ¡Lo has hecho!

Ahora siéntese y espere, el tiempo exacto que tomará el trabajador incluirá todos los pasos y restricciones que ha puesto en su WorkRequest y el estado del sistema en este momento.

Publicación traducida automáticamente

Artículo escrito por therebootedcoder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *