美文网首页我爱编程
AIDL与Binder的区别

AIDL与Binder的区别

作者: zhougansong | 来源:发表于2018-04-16 15:46 被阅读0次

    消息队列和管道采用存储-转发方式,即数据先从发送方缓存区拷贝到内核开辟的缓存区中,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝过程。

    Binder是一个远程对象的基础类,核心部分是远程调用机制,这部分是由IBinder定义的。

    它是对IBinder类的实现,其中IBinder类提供了这样一个类的标准的本地化实现方式。

    大多数开发者不会去直接实现Binder类,而是用AIDL工具来描述他们自己想要的接口,借助它来生成一个合适的Binder之类。

    AIDL(Android Interface Define Language),是android的一种接口定义语言,类似于IDL。

    借助它,你可以定义接口,使得客户端和服务端之间实现进程间通信。对android来说, 一个进程无法通过正常的方法来访问另一个进程的内存空间。可以说,他们需要把对象分解成操作系统可以理解的原子类型,然后使对象突破限制在不同进程之间进行传输。具体实现这种机制的代码写起来非常枯燥,所以android为你提供了AIDL语言来进行处理。

    IwifiManager.aidl (frameworks/base/wifi/java/android/net/wifi)编译后,系统会生成IwifiManager.java(out/target/common/obj/java-libraries/framework-intermediates/wifi/java/android/net/wifi/),这个类的存根类继承Binder类,并实现IwifiManager.aidl的接口。

    相关文章

      网友评论

        本文标题:AIDL与Binder的区别

        本文链接:https://www.haomeiwen.com/subject/xfjekftx.html