interface IPowerManager{
boolean isScreenOn();
}
AIDL工具会将其转化为IPowerManager.java:
public interface IPowerManager extends android.os.IInterface{
public static abstract class Stub extends android.os.Binder implements android.os.IPowerManager{
public static android.os.IPowerManager asInterface(android.os.IBinder obj){
........
return new android.os.IPowerManager.Stub.Proxy(obj);
}
public boolean onTransact(int code,android.os.Parcel data,android.os.Parcel reply,int flags){
switch(code){
case TRANSACTION_isScreenOn:{
boolean _result = this.isScreenOn();
reply.writeInt(result);
}
}
}
private static class Proxy implements android.os.IPowerManager{
private android.os.IBinder mRemote;//BinderProxy
public boolean isScreenOn{
mRemote.transact(Stub.TRANSACTION_isScreenOn,data,reply,0);
return reply.readInt();
}
}
}
}
上面的Java文件省略了很多内容,我们可以看到会帮我们创建Stub和Proxy,在Stub的asInterface中返回Proxy,在Proxy中调用BinderProxy通信并返回结果,Server端只要继承Stub,实现IPowerManager中定义的方法即可。
本文地址:https://blog.csdn.net/wjtzc1990/article/details/107421944
如对本文有疑问, 点击进行留言回复!!
Springboot项目因为kackson版本问题启动报错解决方案
Java多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask详解
网友评论