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:
- ¿Es el manejo de llamadas http de servicios de múltiples intenciones buen enfoque?
- La notificación creada por IntentService utiliza siempre una intención incorrecta
- Diálogo de alerta de Android desde dentro de un servicio de intenciones
- Android IntentService no está iniciando
- Android AlarmManager para continuar después de reiniciar / eliminado de RecentTaskManager
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.
- ¿Es posible usar un IntentService?
- ¿Es IntentService lo correcto?
- ¿Hay ejemplos (como no he encontrado nada que me muestre cómo hacer esto)?
- Espera para AsyncTask ejecutado con ProgressDialog
- Evitar que el "proceso de Android" sea un error "incorrecto"
- Utilizar Parcelable con un objeto con Hashmap
- ¿Hay un límite al tamaño de la cola en un IntentService?
- Android: IntentService no hace cola correctamente
- START_STICKY para IntentService
- ¿AlarmManager requiere que PendingIntent sea del tipo BroadcastReceiver?
- Servicios Roboeléctricos y de Intención
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/
- Actualización de la descripción de la aplicación en la tienda de reproducción
- Detección de la actividad del usuario en android