第一種方法:
在 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),這樣就省事。