文章目录
1. AIDL支持的数据类型
- 支持除
short
以外的java基本数据类型,之所以不支持short
数据类型,是因为Parcel
无法对short
类型进行序列化,也就无法通过AIDL
将short
类型的数据在客户端和服务器端传输。 String
,CharSequence
List
,接收方必须是ArrayList
Map
,接收方必须是HashMap
- 其他
AIDL
定义的AIDL
接口 - 实现
Parcelable
的类
2. 服务端的实现
2.1 定义用于传输的类型
如果你想传输一个自定义的类,这个类需要继承自Parcelable
,并且还需要定义一个相应的AIDL
文件,用来声明已经实现了Parcelable
接口的数据类型。
首先是先创建一个用来声明的AIDL
文件,有了这样的声明,就可以在对应的AIDL
文件中使用Goods
类型:
// Goods.aidl
package com.baijimao.goodsaidlserver;
// Declare any non-default types here with import statements
parcelable Goods;
同时还要定义用于传输的实现了Parcelable
接口的类Goods
:
package com.baijimao.goodsaidlserver;
import android.os.Parcel;
import android.os.Parcelable;
/**
* @author: baijimao
* @date: 2019/5/11
* Description:
*/
public class Goods implements Parcelable {
private String name;
private double price;
public Goods(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Goods{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
protected Goods(Parcel in) {
name = in.readString();
price = in.readDouble();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeDouble(price);
}
public void readFromParcel(Parcel dest) {
name = dest.