Android系統服務 二

2021-07-12 01:25:34 字數 1338 閱讀 7837

我們今天繼續來看系統服務

把上面的過程總結一下:

1.呼叫系統服務,呼叫成功會返回乙個ibinder介面,應用獲取到這個介面,完成繫結

2.繫結成功,開始呼叫,客戶端呼叫transact函式

3.transact會呼叫ibinder中的ontranscat函式

4.ibinder中的ontranscat函式呼叫stub中的ontranscat函式

5.由於stub繼承了我們的介面,所以ontranscat又會呼叫具體的功能**

6.audioservice繼承了stub,此時就會執行audioservice中的具體功能

我們是如何獲取系統服務的

我們通常使用getsystemservice來獲取系統服務,接下來我們看看getsystemservice的原始碼

@override

public object getsystemservice(string name)

這裡呼叫了systemserviceregistry的方法

public

static object getsystemservice(contextimpl ctx, string name)

又呼叫了servicefetcher的getservice方法

static

abstract

inte***ce

servicefetcher

我們發現這是乙個抽象的類,那麼我們去找找它的實現類

registerservice(context.audio_service, audiomanager.class,

//實現類在此

new cachedservicefetcher() });

android系統服務研究

android系統服務,也是分成客戶端和服務端,客戶端用來供上層 應用層來呼叫 那如何獲取乙個系統服務的客戶端和服務端的例項呢?如下 mtelephonymanager telephonymanager getsystemservice context.telephony service mtele...

Android系統機制解析 公共服務

建立乙個公共服務類後有兩種使用方式,第一種將公共服務放到自己的專案中執行,這樣外界無法訪問和控制這個公共服務類,這個服務的所有變數 函式都在自己的專案中執行,可以直接通過startintent service 重複呼叫此服務。第二種是將公共服務配置到自己專案的xml檔案中,並設定process re...

雲巴推送系統Android版服務評測

wifi網路下 測試環境 windows 7旗艦版 64x eclipse nexus5 mx3 測試物件 雲巴推送 測試手機 nexus5 mx3 系統版本 nexus5 android 4.4.2 mx3 android 4.4 手機網路 wifi 測試方法 客戶端測試 測試時間 2014 09...