深入淺出 Android核心組件Service(3)
前兩節中可以看到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://down.51cto.com/data/326376