AIDL文件怎么在Android工作室项目中创建

  介绍

AIDL文件怎么在Android工作室项目中创建?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在Android系统中,跨进程通信是非常普遍的事情,它用到了活页夹机制处理进程之间的交互.Binder机制会开放一些接口给Java层,供Android开发工程师调用进程之间通信。这些接口Android封装到了AIDL文件里,当我们项目用到跨进程通信时可以创建.aidl文件,.aidl文件可以协助我们达到跨进程的通信。下面简单介绍用AndroidStudio创建AIDL文件的过程。

<>强。新建AIDL文件

1。项目文件夹右键——→新——→选择AIDL

 AIDL文件怎么在Android工作室项目中创建

2。自定义一个接口名称

 AIDL文件怎么在Android工作室项目中创建

3。创建之后我们看到了xxx。aidl文件,然后编辑自己项目需要实现的方法,这里很简单就获取一个字符串的方法getAllName。

 aidl文件怎么在Android工作室项目中创建

4。写好之后,我们需要重新重建,完后在项目构建/生成/源/aidl/调试/包名目录下就看到了系统为我们生成的以刚才。aidl文件名命名的java文件。

 aidl文件怎么在Android工作室项目中创建

该java文件系统会自动生成代码:

存根:描述了一个java服务,对应是一个远程的服务。

代理:描述了一个java服务的代理对象,在客户端就会得到这个对象。

这两者都实现了IPersonManager接口。

asInterface:将java服务的代理对象即一个BinderProxy封装成了一个IPersonManager.Stub。代理对象,实现了IPersonManager接口。

onTransact:负责接收分发进程间的通信。它首先会收到客户发来的请求,不同的方法进入相应的情况下代码中,然后交给存根的子类去处理事件,例如. lang。字符串_result=this.getAllName ();,,这里的这就可以让它的子类去接收该请求并处理。
内部的交易方法:用来发送进程间的请求。

<强> b。利用AIDL实现进程间的通讯

一:接口文件中只含有基础数据类型

如上AIDL文件,IPersonManager中只用到了基本数据类型,此时要完善服务器端的小项目,还需要新建一个服务。
服务器端代码如下

公共类MainActivity AppCompatActivity延伸实现View.OnClickListener {
  私有静态最终字符串标签=癕ainActivity";
  私人按钮btnGet;
  私人EditText etShow;
  公共IPersonManager mIPersonManager;
  ServiceConnection sc=new ServiceConnection () {
  @Override
  公共空间>目的意图=new意图(“com.ly.testaidlserver.aidl.AIDL_SERVICE");
  intent.setPackage (“com.ly.testaidlserver");
  bindService(意图、sc Service.BIND_AUTO_CREATE);

2。我们需要把服务器端的aidl文件复制到客户端,在客户端中存放aidl的文件夹也需要跟服务器端包名一致。

如图:

 aidl文件怎么在Android工作室项目中创建

 aidl文件怎么在Android工作室项目中创建

上图为aidl文件在服务器端存放的路径,下图为复制到客户端aidl文件的路径,这里要保持一致,因此客户端需要针对服务器端的包名新建一个包。

3。当我们启动项目的时候,如果在活动中IPersonManager找不到报出异常,请在应用程序的构建。gradle中添加aidl文件指名目录,如本例中添加,

 sourceSets {
  主要{
  aidl。srcdir=[& # 39; src/main/aidl # 39;, & # 39; src/main/java # 39;】
  }
  }

<强>二:接口文件中含有复杂数据类型,

1。新建一个Person.aidl ,,,内容非常简单
parcelable人;

2。新建一个人实体类,为了能在进程间进行通信必须实现parcelable接口。

3。在IPersonManager中添加了一个方法,这里注意用到类的人必须将包名进口进去。

AIDL文件怎么在Android工作室项目中创建