jueves, 23 de julio de 2009

BroadcastReceiver Class - Vista rápida

BroadcastReceiver

La clase base que recibe Intents enviados por sendBroadcast(). Puedes registrar dinámicamente una instancia de ésta clase con Context.registerReceiver() o estáticamente publicando una implementación a través del tag en el archivo de Manifiesto "AndroidManifest.xml".

Cuidado!
Si estás registrando un receiver en la implementación de Activity.onResume(), debes eliminarlo con Activity.onPause(). (No querrás recibir Intents cuando esté en pausa, esto ahorra un consumo innecesario de los recursos del sistema).

  • Normal broadcasts. Son enviados con Context.sendBroadcast y son asincronos. Todos los receivers de broadcast se ejecutan en orden indefinido, a menudo al mismo tiempo. Esto es mas eficiente, pero significa que los receivers no pueden usar las APIs result or abort usadas aqui.
  • Ordered broadcasts. Son enviados con Context.sendOrderedBroadcasts y son enviados a su destinos en ese momento. Cada receiver ejecuta en turno, esto puede propagar un resultado al siguiente receiver, o puede abortar el broadcast si no se quiere pasar a otros receivers. El orden de ejecución de los receivers puede ser controlado con el atributo android:priority en el filtro intent-filter; receivers con la misma prioridad serán ejecutados en un orden arbitrario.

Ciclo de vida de un receiver.

Un objeto BroadcastReceiver es solo válido durante la llamada a onReceive(Context, Intent). Una vez que retorna de ésta función el sistema considera que el objeto debe finalizar y no estar mas tiempo activo.

Esto significa que no puedes realizar operaciones asíncronas utilizando onReceive porque debes retornar de la función para manejar la operación asíncrona y en este punto el objeto ha sido finalizado por el sistema y deja de estár activo y el sistema se toma su libertad de matar el
proceso antes de que se pueda realizar la operación asíncrona por completo. Debes utilizar la API NotificationManager en su lugar

Información mas detallada de la clase en la documentación de Android

No hay comentarios:

Publicar un comentario