1.service使用兩種方式單獨啓動後的生命週期:
使用startService方式啓動的幾點說明:
onCreate:只有service第一次啓動被創建時纔會調用;
onStartCommand:每次調用startService都會調用;
onDestroy:調用stopService時調用,不管此時前面調用了多少次startService;也就是調用stopService後服務就會關閉,後面調用startService會重新創建服務,重新調用onCreate和onStartCommand;
使用bindService方式啓動的幾點說明:
onCreate:只有service第一次啓動被創建時纔會調用;
onBind:只在第一次調用bindService時會執行,後面再bindService不會調用;
onUnbind:最後一次unbindService時調用;
onDestroy:在onUnbind後緊接着調用;
2.如果startService和bindService都有調用的,生命週期如下圖:
onCreate、onBind、onStartCommand、onUnbind:同用某一種方式單獨啓動時行爲相同;
onDestroy:等到所有綁定服務都斷開並且調用一次stopService,onDestroy纔會調用,unbindService和stopService不分先後;
3.一些理解
(1)經驗證,Service生命週期裏的方法,都是在UI線程中調用的,包括使用bindService時ServiceConnection的回調方法onServiceConnected和onServiceDisconnected;
(2)startService和bindService,都可以用於調用本地服務或者遠程服務,可根據需要選擇;
(3)ServiceConnection的onServiceDisconnected在遠程服務調用時,解綁後並不會調用,只有服務進程崩潰或被殺死後纔會調用,並且遠程服務會自動重啓,重啓後onServiceConnected會被調用;
(4)bindService時,service和調用程序在同一個進程裏時,調用程序使用interface調用service裏的接口,service接口代碼和調用代碼在同一個線程運行;
驗證使用的代碼下載鏈接:http://download.csdn.net/detail/enjoyinwind/9553848
ps:圖來自Google官網和網絡,如有侵權請聯繫刪除;