android aidl案例,Android——使用AIDL实现进程间传递对象案例

1 前言

在 Android——使用AIDL实现进程间通讯简单案例 中介绍了使用 AIDL 在进程间传递字符串,对于8种基本数据类型( byte、short、int、long、float、double、boolean、char )和 CharSequence(包含 String )、List、Map,用法同理。

需要注意:List 和 Map 中的所有元素必须是 AIDL 支持的类型,List 支持泛型,Map 不支持泛型。

本文将介绍使用 AIDL 实现自定义 User 对象间的传递,User 包含 name(String)和 age(int)2个属性。

本文全部代码见→使用AIDL实现进程间传递对象案例

2 项目结构

android aidl案例,Android——使用AIDL实现进程间传递对象案例_第1张图片

注意事项:

User.java 和 User.aidl 的包名必须一致

aidl_C 和 aidl_S 下的 User.java 文件内容必须一致

aidl_C 和 aidl_S 下的 aidl 文件及其包名必须一致

3 服务端 aidl_s 代码

(1)传输类定义

User.java

package commu;

import android.os.Parcel;

import android.os.Parcelable;

public class User implements Parcelable{

private String name;

private int age;

public User(String name, int age) {

this.name = name;

this.age = age;

}

protected User(Parcel in) {

name = in.readString();

age = in.readInt();

}

public static final CreatorCREATOR = new Creator() {

@Override

public User createFromParcel(Parcel in) {

return new User(in);

}

@Override

public User[] newArray(int size) {

return new User[size];

}

};

@Override

public int describeContents() {

return 0;

}

@Override

public void writeToParcel(Parcel dest, int flags) {

dest.writeString(name);

dest.writeInt(age);

}

public String getName() {

return name;

}

public int getA

你可能感兴趣的:(android,aidl案例)