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()。