Suscripción o vinculación a un servicio de Intent existente

Tengo una aplicación que tiene una actividad inicial que lista algunos archivos dentro de una vista de lista. Cuando se hace clic en un elemento dentro de la lista, se lleva a una actividad de detalle de ese archivo específico.

En la vista de detalle tengo un botón llamado descargar, al hacer clic en descargar empieza un IntentService que establece el archivo para ser descargado como tal:

downloadButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(AppDetailsActivity.this, AppDownloadService.class); intent.putExtra(Consts.APP_DOWNLOAD_RECEIVER_KEY, new DownloadReceiver(new Handler())); startService(intent); } }); 

La clase DownloadReceiver se utiliza para actualizar una barra de progreso dentro de la actividad detallada del archivo de descarga.

Ahora lo que quiero hacer …

Si el usuario está descargando el archivo desde la actividad de detalle y luego vuelve a la actividad anterior, quiero que la actividad se suscriba / enlaza de alguna manera al mismo IntentService y recupera los resultados para que pueda mostrar una barra de progreso dentro de la lista Elemento del archivo que se está descargando.

  1. ¿Es posible usar un IntentService?
  2. ¿Es IntentService lo correcto?
  3. ¿Hay ejemplos (como no he encontrado nada que me muestre cómo hacer esto)?

Para una descarga puede usar un IntentService . Se ejecuta en un hilo diferente. Además, tenga en cuenta que llamar a startService() varias veces para que IntentService creará una cola y manejará una intención a la vez.

Para mostrar el progreso de una Activity , no creo que las transmisiones sean lo correcto. Aunque es muy probable que sean procesos en orden, el framework o Android no garantiza un pedido a la entrega. Esto significa que usted puede obtener la emisión de 50% y luego la emisión de 40%. Para esto recomiendo que eche un vistazo en este ejemplo: http://developer.android.com/reference/android/app/Service.html#LocalServiceSample

Puede parecer un poco más complicado pero tendrá una comunicación de 2 vías en la que puede confiar.

Me las arreglé para encontrar una solución. Resulta que tengo que usar una intención de difusión para publicar el progreso en mi servicio; Y utilizar BroadcastReceiver en mis actividades para recuperar los resultados.

El siguiente enlace muestra un ejemplo de envío y recuperación de resultados de servicios a través de emisiones.

http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/

  • ¿Qué sucede cuando mi actividad se destruye cuando estoy usando IntentService con ResultReceiver
  • CountDownTimer no funciona en IntentService
  • Android: El servicio de intento anidado no se inicia después de llamar a Context.startService ()
  • ¿Está bien bloquear el subproceso de la interfaz de usuario al mostrar un diálogo de alerta?
  • Android: mantener el servicio en ejecución cuando se mata la aplicación
  • NetworkOnMainThreadException en IntentService
  • Java.lang.RuntimeException no puede instanciar servicio: java.lang.NullPointerException
  • ¿Puede un IntentService ejecutarse indefinidamente?
  • Cómo recopilar información de IntentService y actualizar la interfaz de usuario de Android
  • Android la diferencia entre onHandleIntent & onStartCommand
  • StartForeground para IntentService
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.