龙空技术网

Android学习笔记——AS中使用AIDL

程序员月下 106

前言:

此刻同学们对“aidlearning安装教程”都比较关注,姐妹们都想要剖析一些“aidlearning安装教程”的相关知识。那么小编同时在网摘上搜集了一些对于“aidlearning安装教程””的相关资讯,希望小伙伴们能喜欢,我们一起来了解一下吧!

AIDL

我在阅读源码的过程中,发现有很多需要进程间通信的地方,都采用了AIDL的形式,所以这里专门学习一下这个AIDL的用法

简介

AIDL是Android中IPC的一种方式,同样的还有理由共享文件、Messenger等等。但是相对来说,最主要用到的还是AIDL和Messenger————由于后者只能依次处理消息,因此主要还是AIDL用的多一点。而AIDL的底层还是需要用到Binder,这里先不去讨论,之后深究。

从总体上看,AIDL用法就是,把需要通信的两个组件(不同进程)分别作为客户端和服务端,类似于C/S架构,我们需要自定义一份xxx.aidl文件,作为一份通用的协议,这份协议需要在客户端和服务端各执一份。服务端需要实现AIDL文件定义的方法,客户端与服务端取得联系之后,来调用这些方法。因此AIDL使用起来其实很简单,分为以下几个步骤:

创建一份AIDL文件,在其中定义好协议(接口)把进程间通信的被动一端作为服务端,创建一个Service,实现协议(接口)定义的方法,用来处理客户端请求另一端,客户端,与服务端建立链接,开始调用方法

准备工作

为了演示用法,这里建立一个小demo。不对是两个,一个客户端,一个服务端

我这里创建了两个工程,分别作为客户端和服务端。

AIDL文件

先简单说下AIDL文件。这个文件作为一个协议,内容用Java语法描述的话,就是一个接口,可以将它类比于一个Java的接口文件。不过这个文件比普通的Java接口文件要求要严格一点,具体可以参考这篇文章,感觉说的挺详细的:

Android:学习AIDL,这一篇文章就够了(上)

要知道xxx.aidl不是可以随便放的。由于这份文件是客户端和服务端联系的纽带,因此对于这二者来说,这样一份AIDL文件,从包名到内部各种细节来说,都必须是一模一样的。实现起来也很简单,我们在某一端创建好,复制到另一端就可以了,当然复制的时候要注意目录结构要一致。

我这里在服务端创建一个AIDL文件,挪到客户端就可以了。

在AndroidStudio中很简单的操作:

这样便创建好了我们的AIDL文件,目录结构如下:

然后打开刚才创建的AIDL文件,内容如下:

我这里只是做一个简单的加法运算并返回结果。现在已经定义好了我们的协议。如果定义了一些非基本类型的类,也需要放在和AIDL文件同目录下。然后如下所示,将整个aidl目录复制————粘贴至作为客户端的那一方的同样的目录下:

好了,现在在两遍都编译一下,这样系统会自动的针对我们定义的AIDL文件生成一个对应的接口类,存放在这里:

Server端

接下来,在Server端,创建一个Service,内容如下:

然后在Manifest文件里注册一下,为隐式启动做准备

之后自然要运行一遍,将Service注册一下,之后才可以用

Client端

最后,在Clinet端简单的隐式启动刚才的Service,然后取得那个IBinder对象,转换为IMyAidlInterface对象,就可以使用了:

运行一遍,看看log:

这是服务端:

这是客户端:

总结

以上,介绍了AIDL的大致使用方式,可以看到,AIDL的核心原理其实就是我们定义的AIDL文件会编译时生成一个Java接口文件,这个文件包含了客户端、服务端的所有操作。

关注一下我呗!

标签: #aidlearning安装教程 #aidlearning怎么安装软件