Service生命週期

2022-05-01 16:42:13 字數 1196 閱讀 4965

service生命週期

使用context.startservice() 啟動service

其生命週期為context.startservice() ->oncreate()- >onstart()->service running-->context.stopservice() | ->ondestroy() ->service stop

如果service還沒有執行,則android先呼叫oncreate()然後呼叫onstart();

如果service已經執行,則只呼叫onstart(),所以乙個service的onstart方法可能會重複呼叫多次。

stopservice的時候直接ondestroy,

如果是呼叫者自己直接退出而沒有呼叫stopservice的話,service會一直在後台執行。

該service的呼叫者再啟動起來後可以通過stopservice關閉service。

所以呼叫startservice的生命週期為:oncreate --> onstart(可多次呼叫) --> ondestroy

對於bindservice()啟動service會經歷:

context.bindservice()->oncreate()->onbind()->service running-->onunbind() -> ondestroy() ->service stop

onbind將返回給客戶端乙個ibind介面例項,ibind允許客戶端**服務的方法,比如得到service執行的狀態或其他操作。

這個時候把呼叫者(context,例如activity)會和service繫結在一起,context退出了,

srevice就會呼叫onunbind->ondestroy相應退出。

所以呼叫bindservice的生命週期為:oncreate --> onbind(只一次,不可多次繫結) --> onunbind --> ondestory。

一但銷毀activity它就結束,如果按home把它放到後台,那他就不退出。

補充:

在service每一次的開啟關閉過程中,只有onstart可被多次呼叫(通過多次startservice呼叫),

其他oncreate,onbind,onunbind,ondestory在乙個生命週期中只能被呼叫一次。

service生命週期

service 生命週期 注意 onstart方法是在android2.0之前的平台使用的.在2.0及其之後,則需重寫onstartcommand方法,同時,舊的onstart方法則不會再被呼叫.1 可以通過呼叫 context.startservice 啟動乙個 service 這可能會觸發 se...

Service生命週期

1 通過startservice開啟服務 oncreate onstartcommand 2 通過stopservice關閉服務 ondestroy 說明 如果在未stopservice的情況下,再去startservice,只會onstartcommand 3 通過bindservice開啟服務 ...

Service生命週期

service有兩種啟動方式 l context.startservice 當它第一次被呼叫時,service被建立執行oncreate 方法,隨後即呼叫onstartcommand 方法。如果是以這種方式啟動,那麼它會一直執行,不論是否有呼叫者繫結,直到context.stopservice 被呼...