Administrador de trabajo de Android vs Servicios?

3 minutos de lectura

avatar de usuario
deshonrado

En mi aplicación de Android, tengo varios servicios de intención que se ejecutan uno tras otro y el primer servicio de intención es activado por una transmisión. Me encontré con Gerente de trabajo hace unos días y me gustó mucho la simplicidad de las clases Worker y WorkManager. ¿Cuáles son las ventajas y desventajas de Work Manager sobre los servicios de intención regulares? ¿Debería cambiar al administrador de trabajo ahora teniendo en cuenta el hecho de que es posible que tenga que escribir más servicios de intención en el futuro? Además, ¿qué opción me ayudaría a probar el código fácilmente?

  • ¿Necesita esta API para mostrar notificaciones?

    – Igor Ganapolski

    18 de febrero de 2020 a las 18:12

WorkManager viene con las siguientes características:

  • Proporciona tareas que pueden sobrevivir a la muerte del proceso.
  • Puede activar la aplicación y el proceso de la aplicación para hacer el trabajo, por lo que garantiza que se ejecutarán los trabajos.
  • Permite la observación del estado del trabajo y la capacidad de crear cadenas de trabajo complejas
  • Permite el encadenamiento de trabajo, lo que permite segregar una gran parte del trabajo en pequeños trabajos y ejecutarlos en función de diferentes restricciones.
  • Gestiona con elegancia el modo de reposo u otras restricciones impuestas por el sistema operativo.

Los siguientes serían los casos en los que sería útil:

  • Ejecutar tareas en segundo plano de larga ejecución, como cargar medios
  • Análisis y almacenamiento de datos en la base de datos.
  • Tareas críticas que necesita sobrevivir a las muertes del proceso

¿Debería cambiar al administrador de trabajo ahora teniendo en cuenta el hecho de que es posible que tenga que escribir más servicios de intención en el futuro?

En la mayoría de los casos, debería ser un reemplazo para IntentService, pero debe considerarlo cuidadosamente antes de usarlo. Podría ser que IntentService no fuera la mejor opción en primer lugar.

WorkManager no responde a todas las tareas en segundo plano. EG No debe usarlo para procesar pagos, ya que no necesita sobrevivir a la muerte del proceso y estas tareas deben ejecutarse de inmediato. Considere usar el servicio en primer plano. Tampoco es una gran idea usarlos para analizar datos y contenidos de vista.

Realmente necesita sopesar si necesita capacidades antes de usarlo. Dado que Google casi está renovando la forma en que codificamos, WorkManager sería la solución a nuestros problemas de procesamiento en segundo plano. Seguramente sería la opción más importante ya que abstrae el manejo de varias restricciones impuestas por el sistema operativo. Debería considerar usarlo para implementaciones futuras.

Además, ¿qué opción me ayudaría a probar el código fácilmente?

Google también ha proporcionado una biblioteca de prueba que facilita la prueba de WorkManager. Todavía está en desarrollo, pero debería volverse más poderoso antes de su lanzamiento.

  • Hola, dado que el método doWork() es sincronizado, ¿hay alguna forma de hacer algún trabajo asíncrono con RxJava o no?

    –Mehdi Jahed Manesh

    22 de mayo de 2018 a las 7:12

  • @MehdiJahedManesh doWork() se ejecutará en el subproceso de fondo.

    – Sagar

    22 de mayo de 2018 a las 12:09

  • @NicolasJafelle Sí. Puede usar Solicitud de trabajo periódica. Se garantiza que la tarea se ejecutará, incluso si se fuerza el cierre de la aplicación o se reinicia el dispositivo.

    – Sagar

    7 junio 2018 a las 23:28


  • ¿Hay alguna razón para seguir usando IntentService ¿estos días?

    – Igor Ganapolski

    18 de febrero de 2020 a las 18:11

  • ¿Qué pasa con las cargas críticas que se supone que se ejecutan cada 5 minutos, por ejemplo? Porque a veces los trabajadores se pausan si el usuario no abre la aplicación durante mucho tiempo. En tal caso, ¿es prudente tener servicios o trabajadores?

    – Anirudh Ganesh

    13 de noviembre de 2020 a las 18:59

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad