Android—四大組件之Service

一、概述

Android中有兩種方式開啓一個服務,但它們的生命週期有所不同。

二、第一種方式調用startService啓動服務:

1、當服務未啓動,如果調用startService第一次啓動服務會回調方法順序爲:onCreate -> onStart

2、當服務已啓動,如果調用startSerivce啓動服務只會回調方法爲:onStart

3、當服務已啓動,如果外部組件調用stopSerivce或內部調用stopSelf或stopSelfResult關閉服務會回調方法爲:onDestroy

說明:這種服務不會因爲服務創建者銷燬而銷燬,可能會因爲系統內存緊張時被系統強制銷燬(可以改變Serivice優先級延長它被銷燬的時間)。無論啓動多少次服務,只需要調用一次關閉服務就可以關閉服務。

三、第二種方式調用bindService綁定服務

1、當服務未啓動,如果調用bindService第一次綁定服務會回調方法順序爲:onCreate -> onBind -> onServiceConnected

2、當服務已啓動,如果服務創建者再次調用bindSerivice不會回調任何方法,而非服務創建者調用bindService第一次綁定服務只會回調方法爲:onServiceConnected

3、當服務已啓動,如果非服務創建者調用unbindService會解除與之服務的綁定,但不會回調任何方法。而服務創建者調用unbindService會回調方法順序爲:onUnbind ->onDestroy

說明:這種服務會因爲服務創建者的銷燬而銷燬,而且會回調方法順序爲:onUnbind -> onDestroy。無論非服務創建者調用多少次unbindService解除綁定,都不會關閉服務(解除自身與服務的綁定關係)。而只有服務創建者自己調用unbindService纔會關閉服務。

注意:如果退出程序時使用System.exit(0)或者Process.killProcess(Process.myPid())方式完全退出,那麼以調用startService啓動服務的服務會中斷然後再重啓,以至於會回調方法順序爲:onCreate -> onStart。

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