擴(kuò)展系統(tǒng)服務(wù)如ActivityManagerService

第一種方法:

在 IActivityManager.aidl 中添加接口,ActivityManagerService 中實(shí)現(xiàn)

這樣擴(kuò)展簡(jiǎn)單,但是在系統(tǒng)版本升級(jí)時(shí)會(huì)帶來(lái)同步麻煩

第二種方法:

1.創(chuàng)建新服務(wù) ExtActivityManagerService 繼承 ActivityManagerService

重寫onTransact方法

public boolean onTransact(int code, Parcel data, Parcel reply, int flags)

IActivityManager.aidl 生成的java方法編號(hào)都是從0開始遞增,

ExtActivityManagerService中新增的接口可以直接從10000開始編號(hào),如下:

public boolean onTransact(int code, Parcel data, Parcel reply, int flags){

switch(code){

case 10000:

//接口實(shí)現(xiàn)

break;

default:

return super.onTransact(code, data, reply, flags);

break;

}

}

2. 修改ActivityManagerService$Lifecycle

將 mService = new ActivityManagerService(context);改為

mService = new ExtActivityManagerService(context);

這樣就替換了原來(lái)的ActivityManagerService

3. 添加客戶端調(diào)用接口,可創(chuàng)建ExtActivityManager

PS:如果接口參數(shù)很多,可先將接口加在IActivityManager.aidl,重編framework,然后查找

out/soong/.intermediates/frameworks/base/framework/android_common/gen/aidl/frameworks/base/core/java/android/app/IActivityManager.java

參考里面的接口實(shí)現(xiàn),這樣就省事。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容