android之binder学习攻克

Binder和AIDL的关系

2019-10-16  本文已影响0人  某L_GreeceBeast

AIDL即Android Interface Definition Language(安卓接口定义语言),当我们创建了这个接口后,系统会自动生成其对应的Binder类,它继承了IInterface, 内部有一个静态抽象类Stub和Stub内部的Proxy类。其中Stub继承了Binder类,所以AIDL中的Stub即为一个Binder对象。

综上AIDL定义的接口,它除了是一个接口以外,它还是一个Binder对象,支持在接口和Binder之间相互转换(asBinder(), asInterface())。

结下,它的们共同点和差异的地方:

1.他们都与IPC(远程)调用有关。

2.本质不同,Binder是一个对象,继承了IBinder对象,你可以借助它来自定义RPC协议。AIDL是android提供的接口定义语言,借助这个工具,你可以很轻松地实现IPC通信机制,根据需要灵活定义接口,

3.作用范围不同。如果是在一个应用里实现远程调用,使用Binder即可,没必要使用AIDL。如果涉及到在多个应用程序之间使用IPC通信,并且在服务又有多线程业务处理,这时可以使用AIDL。

原文链接:https://blog.csdn.net/u010291868/article/details/73359890

Binder:Linux的动态内核可加载模块。可单独编译,不可独立运行。

它在运行时被链接到内核作为内核的一部分裕兴。

Android系统动态添加一个内核模块运行在内核空间。

内核模块运行在内核空间,用户进程之间通过这个内核模块作为桥梁来实现通信。

——Binder驱动 Binder Driver

上一篇 下一篇

猜你喜欢

热点阅读