初涉IPC,了解AIDL的工作原理及使用方法
今天来讲讲AIDL,这个神秘的AIDL,也是最近在学习的,看了某课大神的讲解写下的blog,希望结合自己的看法给各位同价通俗易懂的讲解
官方文档:http://developer.android.com/guide/components/aidl.html
一.What is AIDL什么是AIDL)
AIDL:Android Interface Definition Language (Android接口定义语言)
首先,我们要知道,进程1和进程2,我们要如何让他通讯/p>
我们首先还是先进Google的API看看
这里提到了两个东西
- Binder
- Messenger
我们继续往下看话就知道
- Binder
- Messenger
翻译:如果您不需要执行并发IPC在不同的应用程序中 你就用Binder ,或者如果你想执行IPC,但不需要处理多线程,实现你的接口Messenger,无论如何,确保你了解实现AIDL之前绑定服务。
所以我们就能理清楚AIDL的概念了
- AIDL //IPC 多应用 多线程
二.Defining an AIDL Interface(语法)
我们来做一个简单的演示
我们要使用的编译工具在我们的SDK/buidl-tools/android版本/aidl.bat,不过实际开发中也不需要手动编译,我们新建一个项目ForAIDL,这里我们使用的开发工具是Android Studio,其实Eclipse可能更加让人熟悉,不过用AS也是大势所趋了,而且AS的目录结构我也很喜欢
然后你就会发现多了一个aidl的文件夹
大致的内容
AS默认是不会去重新构建Gradle,我们点击一下构建按钮
三.AIDL Client And Service(客户端和服务端)
现在就好玩了,我们先来理理思路,一般是这样的,我们一个软件有某个功能,也就是服务端,然后客户端通过AIDL去访问
ServiceAidlInterface
现在我们处理的就不是默认的东西了,AIDL的原理就是你自定义语言接口,对的,我们也来
2. Implement the interface(实现一个AIDL)
根据我们的Google文档,第一步Create the .aidl file已经完成了,现在就来进行第二步了,我们这里需要使用到Service,看文档
OK,写完了服务端就可以写客户端了,我们直接new一个Module-AIDLClients
我們先按剛才的逻辑,把界面写了
我们要想客户端调用服务端的内容,那么就一定要定义标准的语言,所以客户端的aidl和服务端必须一致
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!