que tiene un servicio que escucha a una toma de . Cuando se recibe cierta entrada , se crea una actividad.
Por favor haga esto configurable. Los servicios no deberían ser actividades de inicio, excepto en muy circunstancias inusuales (por ejemplo, el socket es una conexión SIP y está creando un cliente VOIP). Desarrollar una actividad interrumpe al usuario en lo que sea que esté haciendo.
Al recibir otra entrada, es matar esta actividad.
El único escenario que he visto donde este es un patrón válido es descartar la pantalla de llamada entrante cuando la otra parte cuelga la línea. Si está creando un cliente VOIP, su patrón propuesto debería estar bien, pero, de lo contrario, reconsidere que la actividad desaparezca en el medio del usuario que la usa.
Creo AIDL sólo es eficaz cuando el proceso que se va a hablado con es un servicio, no cuando se trata de una actividad?
No, también funciona en el sentido inverso, pero generalmente solo si la actividad es la que inicia el servicio y se vincula al mismo. Más importante aún, AIDL es solo para la comunicación entre procesos.
me encantaría algunas direcciones o sugerencias sobre la manera de resolver mi problema .
Realmente no ha proporcionado suficiente información sobre la naturaleza de la comunicación para darle una respuesta completa. ¿Qué es exactamente lo que el servicio intenta decir sobre la actividad? ¿La actividad también está tratando de comunicarse con el servicio?
El patrón recomendado para la comunicación continua de una actividad a un servicio es utilizar el patrón de enlace local. Encontrará un ejemplo de esto en sus muestras de SDK, y también puede encontrar uno here.
El servicio tiene opciones para comunicarse de nuevo con el cliente: a través de una devolución de llamada (por ejemplo, Handler
en la respuesta proporcionada por el Sr. Smiljanić) o por difusión Intents
. En el caso de la devolución de llamada, la actividad tendría que vincularse al servicio para obtener acceso a una API para proporcionar el objeto de devolución de llamada. El servicio se aferraría a ese objeto y llamaría a los métodos durante los eventos clave.
Si su servicio está realizando su trabajo principal en una cadena de fondo, deberá asegurarse de que sus operaciones de interfaz de usuario se realicen en la secuencia de la interfaz de usuario. El Handler
es un enfoque para eso.
Muy bueno Mr. CommonsWare;) –