Service相關的生命週期

2021-07-16 22:19:07 字數 1537 閱讀 5402

方式一的生命週期:

通過startservice()開啟的service的生命週期是:

oncreate()-> onstart()-> (執行中)(stopservice執行) ondestroy()

方式二的生命週期:

通過bindservice()開啟的service的生命週期:

oncreate()->onbind()->{onserviceconnected(serviceconnection的方法)}(執行中)->(unbindservice執行)onunbind()->ondestroy();

方式三的生命週期:

startservice 和bindservice二者共同使用:

oncreate()->onstart()->onbind()->{onserviceconnected(serviceconnection的方法)}(執行中)

(unbindservice執行)onunbind()->(再次執行bindservice)onrebind()(onunbind返回true時才會呼叫)

注意:onunbind()返回false時,onbind和onunbind只會被呼叫一次(onrebind不會被呼叫但onserviceconnected(serviceconnection的方法)可以別多次呼叫;為true時,onrebind和onunbind會被呼叫多次(onbind建立時只會執行一次);

onunbind()返回false時生命週期如下:

oncreate()->onstart()->onbind()->{ 返回

}(執行中)

(執行unbindservice)->onunbind->(bindservice)(無呼叫)->(onserviceconnected(serviceconnection的方法被呼叫)->

(執行unbindservice)(無呼叫);

現象解釋:

bindservice可以呼叫onbind和onunbind,也就是說先繫結,再解綁(返回true)。如果繫結了,

但沒有成功解綁(返回false);是不允許再次繫結的;onrebind執行的條件也是當其能夠成功解綁;

onserviceconnected(serviceconnection的方法),是不管其有沒有解綁的,是可以多次執行的;

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生命週期 使用context.startservice 啟動service 其生命週期為context.startservice oncreate onstart service running context.stopservice ondestroy service stop 如果...