趙雅智 service生命週期

2021-09-08 12:45:09 字數 1507 閱讀 7850

android中的服務和windows中的服務是類似的東西,服務一般沒實使用者操作介面。它執行於系統中不easy被使用者發覺,能夠使用它開發如監控之類的程式。

第一步:繼承service類

public class smsservice extends service

服務不能自己執行,須要通過呼叫context.startservice()或context.bindservice()方法啟動服務

這兩個方法都能夠啟動service。可是它們的使用場合有所不同。

context.startservice()生命週期

假設打算採用context.startservice()方法啟動服務,在服務未被建立時,系統會先呼叫服務的oncreate()方法,接著呼叫onstart()方法。

假設呼叫startservice()方法前服務已經被建立,多次呼叫startservice()方法並不會導致多次建立服務,但會導致多次呼叫onstart()方法。

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

僅僅能呼叫context.stopservice()方法結束服務,服務結束時會呼叫ondestroy()方法。

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

詳細細節見:

context.bindservice()生命週期

假設打算採用context.bindservice()方法啟動服務。在服務未被建立時。系統會先呼叫服務的oncreate()方法,接著呼叫onbind()方法。

這個時候呼叫者和服務繫結在一起,呼叫者退出了。系統就會先呼叫服務的onunbind()方法,接著呼叫ondestroy()方法。

假設呼叫bindservice()方法前服務已經被繫結,多次呼叫bindservice()方法並不會導致多次建立服務及繫結(也就是說oncreate()和onbind()方法並不會被多次呼叫)。

假設呼叫者希望與正在繫結的服務解除繫結,能夠呼叫unbindservice()方法,呼叫該方法也會導致系統呼叫服務的onunbind()-->ondestroy()方法。

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

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

詳細細節見:

補充:

在service每一次的開啟關閉過程中。僅僅有onstart可被多次呼叫(通過多次startservice呼叫),其它oncreate。onbind,onunbind,ondestory在乙個生命週期中僅僅能被呼叫一次。

趙雅智 Fragment生命週期

主要看兩張圖。和跑 一,fragment的生命周 二,與activity生命週期的對照 當乙個fragment 物件關聯到乙個 activity 時呼叫。2 oncreate 初始建立 fragment 物件時呼叫。3 oncreateview 建立與fragment 物件關聯的 view 檢視時呼...

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開啟服務 ...