Android service理解

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官網和網絡,如有侵權請聯繫刪除;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章