Android Service 服務詳細講解

2021-08-27 02:47:42 字數 1540 閱讀 1707

android 的service 和 handler一樣很重,如需了解handler,請檢視android handler 非同步訊息機制

下面我們具體講解一下service:

service概念及用途:

service 是 android 系統中的一種元件,它和activity 的級別差不多,但又activity不同,它是不能與使用者互動的,但可以和其他元件進行互動。它不能自己執行,只能後台執行。

service生命週期:

android service的生命週期並不像activity那麼複雜,它只繼承了oncreate(),onstart(),ondestroy()三個方法,當我們第一次啟動service時,先後呼叫了oncreate(),onstart()這兩個方法,當停止service時,則執行ondestroy()方法,這裡需要注意的是,如果service已經啟動了,當我們再次啟動service時,不會在執行oncreate()方法,而是直接執行onstart()方法,具體的可以看下面的例項。

service與activity通訊:

service後端的資料最終還是要呈現在前端activity之上的,因為啟動service時,系統會重新開啟乙個新的程序,這就涉及到不同程序間通訊的問題了(aidl)這一節我不作過多描述,當我們想獲取啟動的service例項時,我們可以用到bindservice和onbindservice方法,它們分別執行了service中ibinder()和onunbind()方法。

service 啟動方式:

一、context.startservice()

二、context.bindservice();

使用service之前必須在androidmainfest.xml 中註冊

呼叫流程:

第一種:

啟動:context.startservice() ---> oncreate() ---> onstartcommand()

銷毀:ontext.stopservice() ---> ondestroy();

如果service還沒執行,則android會先呼叫oncreate()方法,然後再呼叫onstartcommand();

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

第二種:

啟動:context.bindservice() ---> oncreate() --->onbind();

銷毀:onunibind() ---> ondestroy()

onbind() 將返回給客戶端乙個ibind介面例項,ibind允許客戶端呼叫服務的方法,比如得到service允許狀態或者其他操作這個時候呼叫者(context,例如activity)會和service繫結在一起,context退出了,service就會呼叫onunibind() ---> ondesytoy()相應退出

Android Service 在前台執行服務

前台服務是哪些被認為使用者知道的並且在記憶體低的時候不允許系統殺死的服務。前台服務必須給狀態列提供乙個通知,他被放到了 正在進行中 ongoing 標題之下,這就意味著直到這個服務被終止或從前台刪除通知才能被解除。要讓你的服務在前台執行,需要呼叫startforeground 方法,這個方法需要兩個...

Android Service簡單總結

分兩種 local service 不少人又稱之為 本地服務 是指client service同處於乙個程序 remote service 又稱之為 遠端服務 一般是指service處於單獨的乙個程序中 remote service 常用的有兩種實現 messenger 信使 使用廣播通訊,serv...

Android Service相關知識

public void oncreate l.d wmodel.time,oncreate耗時 system.currenttimemillis s1 public static string getprocessname context cxt,int pid if procinfo.pid pi...