targetsdkversion studio oreo developer descargar compilesdkversion compatibilidad actualizacion android android-activity android-intent

android - studio - ¿Cómo utilizar un intento de actualizar una actividad?



descargar actualizacion de android (2)

Tengo un servicio que está descargando un archivo. Cuando finalice 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 comience si aún no se está ejecutando.

Esperaba poder hacer esto haciendo una nueva Intent con una bandera especial.

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


La buena manera de hacer esto es vincular su actividad de "Archivos descargados" al servicio. Cuando vincula el servicio, en la función onServiceConnected, registre una devolución de llamada de Binder. Luego, cuando tenga nuevos datos disponibles, el servicio solo llamará a esa 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á su actividad.

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

samples / ApiDemos / src / com / example / android / apis / app /


Puede crear una nueva instancia de BroadcastReceiver y hacer algo en este sentido 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 que no está claro.