前兩節中可以看到Activity和Service,context.startService對應着Service中的onStart()方法,context.onBindService對應的是Service中的onBind()方法。當我們繼想綁定一個Service又想在Activity停止時,Service不會停止,我們可以先StartService,然後再BindService()。這時候的流程圖如下所示:
此時需要注意一個問題,當Activity退出的時候,Sercvice並不會停止,此時我們可以再進入Activity重新綁定,當這時候Service就會調用onRebind()方法,但是調用onRebind()方法的前提是先前的onUnbind()方法執行成功,但是使用super.onUnbind(intent)是執行不成功的,這時候我們要手動的使其返回true,再次綁定時Rebind()就會執行。否則,如果退出時不顯示的指定onUnbind()爲成功的話(爲false),那麼重新啓動此Activity來綁定服務時,Service的onBind()方法和onReBind都不會執行,但是ServiceConnection方法確一定會回調了。這說明在Service中的onBind()方法不同於onStart()方法不能被重複調用。
本節代碼和上節代碼大致相同,只不過是在bind之前先start service ,大家可以在DDMS中看onUnbind() onRebind()的調用情況。本節代碼在此下載:
http://download.csdn.net/detail/internetman/3967758