tutorial studio start servicios servicio que primer plano notificaciones implementar enlazados completed android binding service

studio - Servicio Android: onBind(Intención) y onUnbind(Intento) se llama solo una vez



servicios enlazados android (2)

Creo que this (a partir de la guía oficial de desarrollo) puede explicar todas sus consultas:

Múltiples clientes pueden conectarse al servicio a la vez. Sin embargo, el sistema llama al método onBind () de su servicio para recuperar el IBinder solo cuando se vincula el primer cliente. Luego, el sistema entrega el mismo IBinder a cualquier cliente adicional que se vincule, sin volver a llamar a OnBind ().

Tengo la actividad y el servicio. Cuando se inicia Activity, llama a startService() para que este servicio esté activo incluso cuando se destruye Activity, y bindService() para comunicarse con este servicio.

bindService() devuelve true, se llama a mService.onBind() se llama a ServiceConnection.onServiceConnected() . Todo funciona

Cuando destruyo mi actividad presionando la tecla Atrás, se llama a unbindService() y se llama a unbindService() . ( onUnbind() false en este onUnbind() .

Luego empiezo esta Actividad nuevamente, bindService() devuelve true, y luego no se llama a mService.onBind() Pero también se llama a ServiceConnection.onServiceConnected() y todo vuelve a funcionar.

Parece que Dalvik recuerda lo que mi onBind() devolvió la última vez, y simplemente no onBind() llamar a onBind() . Cuando destruyo mi actividad nuevamente, onUnbind() NO se llama también.

Puedo vincular y desvincular este Servicio a mi Actividad cualquier cantidad de veces, pero estos métodos ya no se invocarán hasta que destruya el Servicio desvinculando y llamando a stopService() .

En documentos no puedo encontrar ninguna explicación de este comportamiento. Por el contrario, esta figura muestra que onBind() y onUnbind() deben onUnbind() cada vez que los clientes enlazan y desconectan el Servicio. Esta figura se puede encontrar en la parte inferior de esta Guía de desarrollo .


Puede encontrarlo aquí: https://developer.android.com/guide/components/bound-services.html

Puede conectar múltiples clientes a un servicio simultáneamente. Sin embargo, el sistema almacena en caché el canal de comunicación del servicio IBinder. En otras palabras, el sistema llama al método onBind () del servicio para generar el IBinder solo cuando el primer cliente se une. Luego, el sistema entrega ese mismo IBinder a todos los clientes adicionales que se unen a ese mismo servicio, sin volver a llamar a OnBind ().