[QUESTION]
AIDL机制是如何应对本地客户端和远程客户端分别进行处理?
[ANSWER]
实际上这部分内容是在ADT生成的java文件自动进行处理的,代码如下。
public static com.dyq.aidlservice.IAdd asInterface(android.os.IBinder obj)
{ if
((obj==null)) {
return null;
} /×
×obj是从Client端调用asInterface时传递过来的IBinder对象,DESCRIPTOR是aidl的本地路径
× queryLocalInterface方法会在本地检查是否有这个obj的实现,如果本地有这个实现,
× 说明server端和client端处于同一进程,只要返回这个本地实现即可。否则,返回的是
× 系统封装后的Stub.Proxy对象icfans
×/
android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR);
if (((iin!=null)&&(iin instanceof com.dyq.aidlservice.IAdd))) {
return ((com.dyq.aidlservice.IAdd)iin);
} r
eturn new com.dyq.aidlservice.IAdd.Stub.Proxy(obj);
}
网友评论