Binder AIDL相关内容解释

2020-04-30  本文已影响0人  戴维王

IDE根据AIDL文件生成的.java文件

注:大篇幅的粘贴代码会影响读者对文章内容的阅读,所以我希望大家可以对照着.java文件看这篇文章。
文件内容是一个继承自android.os.IInterface的与AIDL文件同名的接口(以下简称AIDL接口),它包含了AIDL中定义所有方法,其核心是一个名为Stub的静态内部类,以及类Stub的静态内部类Proxy。

Stub

Stub是一个继承自类android.os.Binder的抽象类也就是说Stub是一个Binder类(这也就意味着由实现了Stub的类派生出的对象是可以跨进程传递的,IPC中,Service的onBinder方法返回的就是由Stub的实现类派生的对象),它同时还实现了AIDL接口,Stub最终会由Service端实现,用于对外提供服务。它包含了以下几个部分:

Proxy

该类是Service端在Client端的代理类,实现了AIDL接口,类中的方法也是代理方法,负责参数处理-->远程调用目标方法-->返回值处理,代理方法中会调用一个远程调用相关的重要方法transact,方法的原型是public boolean transact(int code, Parcel data, Parcel reply, int flags),方法的参数:

上一篇 下一篇

猜你喜欢

热点阅读