Dmi*_*ank 41 service binding android
我有活动和服务.当Activity启动时,startService()即使Activity被销毁,它也会调用以使此服务处于活动状态,并bindService()与此服务进行通信.
bindService()返回true,mService.onBind()被调用,也ServiceConnection.onServiceConnected()被调用.一切都有效.
当我通过按Back键销毁我的Activity时,它会调用unbindService(),然后调用我的Activity mService.onUnbind().(我回来false了onUnbind().)
然后我重新开始这个活动,bindService()返回true,然后mService.onBind()是不叫!但也ServiceConnection.onServiceConnected()被召唤,一切都有效.
看起来Dalvik记得我onBind()上一次回来了什么,只是不再打电话onBind().当我再次破坏我的活动时,onUnbind()也不会被召唤.
我可以多次绑定和取消绑定此服务到我的Activity,但是在我通过解除绑定和调用来销毁Service之前,不会再调用这些方法stopService().
在文档中,我无法找到对此行为的任何解释.相反,这个数字表明,onBind()和onUnbind()应该叫每个客户绑定时间和取消绑定服务.此图可以在本开发指南的底部找到.
yor*_*rkw 54
我认为这(从官方开发指南中引用)可以解释您的所有查询:
多个客户端可以立即连接到该服务.但是,只有在第一个客户端绑定时,系统才会调用服务的onBind()方法来检索IBinder.然后,系统将相同的IBinder传递给任何其他绑定的客户端,而无需再次调用onBind().