Notificar la actividad del servicio

Intento iniciar un Service de mi Activity para buscar cambios en una página web, es una aplicación privada, así que no me molesto por la duración de la batería …

Pero me gustaría pasar datos de mi Service a mi Activity … Parece que no puedo encontrar la manera de llamar la Activity desde mi Service . ¿Cómo puedo conseguir esto?

Como indicó Alex, puede enlazar al servicio y pasar algún tipo de oyente o callback al servicio para usar en eventos.

O bien, puede usar un Intent transmisión, quizás utilizando métodos como setPackage() en el Intent para limitar el scope de la transmisión.

O bien, puede usar createPendingResult() para crear un PendingIntent que pase como un Intent adicional al servicio; el servicio puede usar ese PendingIntent para activar onActivityResult() en su actividad.

O bien, puede usar un ResultReceiver .

O bien, puedes usar un Messenger .

(Es cierto que no he probado estos dos últimos enfoques, pero creo que funcionarán aquí)

Una alternativa más: si su servicio actualiza el proveedor de contenido, la actividad puede ser notificada a través de ContentObserver . Esto sería suficiente si su servicio descarga algunos datos del servidor y simplemente desea mostrar contenidos nuevos en la actividad.

Algunas maneras feas:

1.) Si la actividad aún no se ha iniciado, utilice startActivity y startActivity , pero recuerde intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

2.) De lo contrario, si la actividad ya ha comenzado, puede escribir su propio método de callback en la actividad y registrar el método en el servicio, luego llamar directamente al método en el servicio.

Espero encontrar una manera inteligente.

Creo que la transmisión también funciona bien, puedes escribir una clase interna estática para recibir la transmisión y comenzar la actividad. Pero también es feo en mi opinión.

El mecanismo ResultReceiver ha sido explicado en otra publicación: – Restful API service Sin embargo, no funcionaría en todos los casos. Por favor, consulte mi comentario en esa publicación. El scope limitado o el mecanismo PendingIntent parecen más adecuados.

    Intereting Posts