Cómo obtener el progreso de un IntentService

Estoy trabajando en una aplicación de Android que necesita muchas llamadas de API. He construido un sistema que implementa un sistema de colas basado en un IntentService. La cosa es, me gustaría mostrar una actualización de ProgressBar exacta mientras IntentService se está ejecutando.

Una forma sería cambiar el sistema de colas a una serie de AsyncTasks. Tendría que mostrar el progreso usando onProgressUpdate() .

Otra forma sería ajustar el IntentService y obtener el progreso de un hilo de fondo.

La cosa es, me gustaría combinar IntentService y AsyncTask características agradables: hacer un sistema de cola que maneja fácilmente los eventos de interfaz de usuario. ¿Hay una mejor manera de implementar eso?

EDIT: He terminado usando AsyncTasks en lugar de IntentServices. Pero aún así, si alguien tiene un patrón agradable para compartir para actualizar el progreso de un IntentService, no dude en agregar su comentario.

Carné de identidad

  • Iniciar un HandlerThread y un controlador
  • Obtener un controlador para el hilo principal de la interfaz de usuario
  • Publicar el trabajo en el hilo de fondo utilizando el controlador de ese hilo
  • Publicar actualizaciones de progreso y resultados a la interfaz de usuario utilizando el controlador de subprocesos de interfaz de usuario

De esta manera usted puede tener un solo hilo de fondo para manejar su cola de trabajo, y publicar cualquier cosa que le guste volver al hilo de interfaz de usuario sin tratar con emisiones

Conmigo, para un IntentService, estaba pensando en emitir cuando iniciar la barra de progreso, y cuándo terminar la barra de progreso. Por lo general, puede utilizar el estándar "recibir de nuevo" para la parte final. Puede registrar difusiones de intenciones diferentes con cadenas diferentes.

La parte difícil fue averiguar un camino para la llamada para averiguar si la barra de progreso se cancela, y yo estaba pensando en tener una tabla de estado que se puede actualizar a medida que avanza la llamada REST. La tabla tendrá un identificador de la llamada, y después de que haya terminado, la entrada se borra. La tabla mantendrá un seguimiento si el hilo debe estar activo.

Por lo tanto, el hilo REST comprobará la tabla antes de cada envío, y detendrá todo / ignorará el envío de los datos si detecta una cancelación

  • Android: ¿Cómo obtener el contexto de la actividad de llamadas en un IntentService?
  • Enviar las actualizaciones de la ubicación a IntentService
  • Android: mejor práctica para volver a intentar IntentService
  • File Observer no funciona desde el servicio de intenciones
  • Android: El servicio de intento anidado no se inicia después de llamar a Context.startService ()
  • Cómo verificar IntentService start
  • ¿El enfoque de diseño de la aplicación de cliente restante en google io 2010 sigue actualizado?
  • ¿Necesita ayuda para descargar imágenes de fondo en Android?
  • Realizar una llamada REST API de un IntentService o un AsyncTask?
  • Cómo determinar si la aplicación se ejecuta desde el servicio
  • Suscripción o vinculación a un servicio de Intent existente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.