在Android中Service概述和AIDL例子

2021-09-01 02:15:55 字數 840 閱讀 9649

service的主要用途是提供後台服務呼叫,與activity不同,service沒有介面,也正因為如此,它不像activity那樣當使用者離開應用介面就停止,service則一直在後台執行,除非明確命令其停止。

service也有生命週期的。當啟動service時,首先呼叫oncreate()方法,然後呼叫onstart()方法。當service停止時,會呼叫ondestroy()方法。

啟動service有兩種方式,分別是呼叫startservice()和bindservice()。使用前者時,如何該service還沒啟動,那麼系統會先後呼叫該service的oncreate()方法和onstart()方法,並且在使用完後該service並不停止,除非使用stopservice()明確停止。bindservice()用於繫結乙個service,如何service不存在,繫結就會失敗;不過可以設定bindservice()的引數,指定當service不存時啟動該service,通過此方法啟動的service在使用完後,系統會自動停止該service。

如果只是提供後台服務的話,那麼不需要使用service,使用執行緒thread就可以了。service的特點還在於程序間的服務呼叫,不僅在乙個應用程式內部可以呼叫,還可以跨應用程式呼叫。呼叫service服務的程式成為客戶端client。

如果service與client同在乙個應用程式內,那麼它們預設是在同乙個程序、同乙個執行緒內執行,因此,為了不使client執行緒掛起,一般建立service時都會重新建立乙個thread完成具體的工作,service僅是提供乙個呼叫的介面。而如果client是在另乙個程式中,那麼client和service則執行在不同的程序中。

aidl就是按照這個利用service的不用程序間來實現的。

Android不同應用間通過Service進行通訊

步驟一 接收方應用定義乙個service,清單檔案中註冊 android enabled true android exported true android process remote 必備屬性 步驟二 主動發起通訊方應用啟動service intent new intent intent.pu...

Android測試教程 8 測試Service

android 測試框架也提供對service測試的支援,基本類為servicetestcase,因為service類通常假定和它是和client是分開使用的,因此你可以無需使用instrumentation 來測試service。當你設計乙個service時,你應該考慮測試用例中如何檢查servi...

Android測試教程 8 測試Service

android 測試框架也提供對service測試的支援,基本類為servicetestcase,因為service類通常假定和它是和client是分開使用的,因此你可以無需使用instrumentation 來測試service。當你設計乙個service時,你應該考慮測試用例中如何檢查servi...