Android服务:onBind(Intent)和onUnbind(Intent)只被调用一次
我有活动和服务。 当Activity开始时,即使在Activity被销毁的时候,它也会调用startService()
来使这个服务处于活动状态, bindService()
与这个服务进行通信。
bindService()
返回true, mService.onBind()
,并调用ServiceConnection.onServiceConnected()
。 所有的作品。
当我通过按回退键销毁我的活动,它调用unbindService()
,我的mService.onUnbind()
被调用。 (我在这个onUnbind()
返回false
。)
然后我再次启动这个Activity, bindService()
返回true,然后mService.onBind()
不被调用! 但是ServiceConnection.onServiceConnected()
被调用,并且全部重新运行。
看起来Dalvik记得我onBind()
返回的onBind()
,并且不再调用onBind()
。 当我再次销毁我的Activity时, onUnbind()
不会被调用。
我可以绑定和解除绑定这个服务到我的Activity任意多次,但是这些方法不会被调用,直到我通过解除绑定和调用stopService()
销毁服务。
在文档中我找不到任何这种行为的解释。 相反, 这个图表明,每次客户端绑定和取消绑定服务时,都应该调用onBind()
和onUnbind()
。 这个数字可以在这个开发指南的底部find。
我认为这 (从官方开发指南引用)可以解释您的所有查询:
多个客户端可以立即连接到服务。 但是,只有当第一个客户端绑定时,系统才会调用您的服务的onBind()方法来检索IBinder。 然后,系统将同一个IBinder传递给绑定的其他客户端,而无需再次调用onBind()。