AIDL机制是如何应对本地客户端和远程客户端分别进行处理?

2018-06-29  本文已影响0人  采蘑菇的小白菜

[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);

}

上一篇 下一篇

猜你喜欢

热点阅读