¿Cómo usar una intención para actualizar una actividad?

Tengo un servicio que está descargando un archivo. Cuando termine la descarga, me gustaría actualizar mi lista de "Archivos descargados" en mi Activity , pero solo si la Activity está ejecutando. No quiero que la Activity inicie si no se está ejecutando.

Esperaba poder hacer esto haciendo un nuevo Intent con alguna bandera especial.

Alguien tiene alguna idea de cómo puedo lograr esto? ¿Un pequeño ejemplo de código?

Puede crear una nueva instancia BroadcastReceiver y hacer algo a lo largo de estas líneas en el método onResume () de su actividad:

 registerReceiver(myReceiver, new IntentFilter(DownloadService.ACTION_FILE_DOWNLOADED)); 

Después de eso, anule el método onReceive () de myReceiver para llamar a una función que actualiza el componente que desea:

 @Override public void onReceive(Context context, Intent intent) { ... updateViewWithData(service.getNewFileData()); ... } 

En el método onPause () de su actividad, simplemente anule el registro del receptor:

 unregisterReceiver(myReceiver); 

Espero que esto te ayude, siéntete libre de preguntar si hay algo incierto.

La buena manera de hacerlo es vincular la actividad de "Archivos descargados" al servicio. Cuando enlaza el servicio, en la función onServiceConnected, registre una devolución de llamada de Binder. Entonces, siempre que tenga nuevos datos disponibles, el servicio sólo llama a la devolución de llamada. Si la actividad no se está ejecutando, la lista de devolución de llamada en el lado del servicio estará vacía, por lo que no informará a su actividad.

Para obtener un ejemplo de este enfoque, eche un vistazo a RemoteService.java en Android SDK:

Samples \ ApiDemos \ src \ com \ ejemplo \ android \ apis \ app \

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.