【发布时间】:2012-02-05 23:15:33
【问题描述】:
我有活动和服务。 Activity启动时,调用startService()使该Service在Activity被销毁的情况下仍然存活,并调用bindService()与该Service通信。
bindService() 返回 true,mService.onBind() 被调用,ServiceConnection.onServiceConnected() 也被调用。所有作品。
当我按返回键销毁我的活动时,它会调用unbindService(),而我的mService.onUnbind() 会被调用。 (我在这个onUnbind() 中返回false。)
然后我再次启动这个 Activity,bindService() 返回 true,然后 mService.onBind() 被 NOT 调用!但是ServiceConnection.onServiceConnected() 也被调用了,一切都恢复正常了。
Dalvik 似乎记得我上次返回的onBind(),只是不再调用onBind()。当我再次销毁我的 Activity 时,onUnbind() 也被 NOT 调用。
我可以多次将此 Service 绑定和取消绑定到我的 Activity,但在我通过取消绑定和调用 stopService() 来销毁 Service 之前,这些方法将不再被调用。
在文档中我找不到这种行为的任何解释。相反,this figure 表明每次客户端绑定和取消绑定服务时都应该调用 onBind() 和 onUnbind()。这个图可以在this Dev Guide底部找到。
【问题讨论】: