AIDL的基本使用
一、AIDL介绍
AIDL全程:android interface definition language,即android接口定义语言,可以理解为就是接口。
二、AIDL使用
AS专门为aidl文件配置了一个文件夹(aidl文件夹)
AIDL支持的数据类型:
- 基本数据类型(int、long、char、boolean、double)
- string和charSequence
- list:只支持arraylist,以及里面的所有元素必须被aidl支持
- map:只支持hashmap
- parcelable:所有实现parcelable接口的对象
- aidl:所有aidl接口本身也可以在aidl文件中使用
注意:自定义的parcelable对象:需要创建一个同类名的aidl文件,只有这样aidl才能识别这个对象。
注意:在aidl中声明其他数据类型时需要在前面加in(输入型参数)、out(输出型参数)、inout(输入输出型参数)
三、AIDL例子
-
创建两个项目PersonAIDLServer和PersonAIDLClient,一个作为服务端一个作为客户端。
PersonAIDLServer项目结构图:
-
创建一个Person工具类,定义两个属性(id、name),生成构造方法和toString方法,然后再实现Parcelable接口,重写其中的方法。
package com.example.personaidlserver;
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable {
int id;
String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
protected Person(Parcel in) {
id = in.readInt();
name = in.readString();
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel in) {
return new Person(in);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}