-
Notifications
You must be signed in to change notification settings - Fork 778
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-08-12:谈谈 AIDL? #119
Comments
1.这个其实不怎么好回答,可以简单的回答就是通信,也可以理解我就是想让你知道我想让你知道一些东西,所以我们定义一些东西你我都这样用。 |
常说AIDL是安卓的一种跨进程通信的方式,其实不太严谨,应该说Binder才是一种跨进程通信的方式,而AIDL是Binder的一种具体应用,有点类似于网络中的传输层和应用层,IBinder有自己的通信协议,负责建立和维护连接,发送数据,而AIDL则定义了更上一层的传输内容,而像ContentProvider、广播同样是利用IBinder进行工作的。 |
1、定义 AIDL 是 android Interface Dialog Launguage , 是一个android 接口 对话语言, |
AIDL 基于Binder的跨进程通信方式,AIDL 需要定义客服端和服务端,需要定义相应的aidl 文件,客户端于服务端是相对的。 aidl 文件会生成对应的aidl.java 文件, 该文件中主要对应Stub, Proxy 两个关键类,当客户端请求服务端时,客户端会通过Stub.asInterface(IBinder).sum(a) 来判断, 服务端的IBider 于客户端是否是同一进程,如果是同一进程,则跟进程间通信没关系了,反之,则会将IBinder 包装为Proxy, 然后客户端调用proxy.sum(a)方法访问服务端,通过_data 传递参数,通过_reply 接受服务端返回数据。 客户端使用IBinder的transact将数据传给服务端, 服务端通过onTransact() 接受参数,并将处理结果写到_reply 中。 |
简单说一下 AIDL 是一种辅助工具,不用AIDL ,一样可以实现跨进程通讯 AIDL 的原理是binder,真正有跨进程通讯能力的也是 Binder,所以 AIDL 只是一个能帮你少写代码,少出错的辅助工具,由于设计的太好,使用太方便,所以非常常用 就像 retrofit 和okhttp 关系一样, retrofit 提供 更加友好的api,真正的网络请求还是由 okhttp发起的 |
AIDL更像是一种DSL吧,一般用来生成跨进程通信的相关方法。不用AIDL照样能跨进程通信 |
全称是Android Interface Definition Language 。 android接口定义语言 |
什么是AIDL?解决了什么问题? |
它是c/s架构都要遵守的一个规范,按照这个规范去工作,通信 |
兄弟,Android Interface Definition Language,不是dialog Launguage ...... |
Android Interface Definition Language (AIDL) |
AIDL是用于进程间的通迅 能够实现进程间的一对多实时并发通迅 |
No description provided.
The text was updated successfully, but these errors were encountered: