Android AIDL使用parcelable复杂数据类型方法
2017-04-05 10:15
405 查看
默认情况下,AIDL 支持下列数据类型:
Java 编程语言中的所有原语类型(如 int、long、char、boolean 等等)String/CharSequence
List
List 中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 可选择将 List 用作“通用”类(例如,List)。另一端实际接收的具体类始终是 ArrayList,但生成的方法使用的是 List 接口。
Map
Map 中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。 不支持通用 Map(如 Map< String,Integer> 形式的 Map)。 另一端实际接收的具体类始终是 HashMap,但生成的方法使用的是 Map 接口。
您必须为以上未列出的每个附加类型加入一个 import 语句,即使这些类型是在与您的接口相同的软件包中定义。
通过 IPC 传递对象
有时一些简单的数据无法满足我们的需求,我们需要的一个自定义实体,这时就需要使用Parcelable,要传递的实体类必须支持 Parcelable 接口。例如我们要实现一个通过aidl来跨进程图书管理的Service。
package com.zhl.androiddevtestdemo.ipc; import android.os.Parcel; import android.os.Parcelable; /** * Book实体类 */ public class Book implements Parcelable{ public int bookId; public String bookName; public Book(int bookId, String bookName) { this.bookId = bookId; this.bookName = bookName; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.bookId); dest.writeString(this.bookName); } protected Book(Parcel in) { this.bookId = in.readInt(); this.bookName = in.readString(); } public static final Creator<Book> CREATOR = new Creator<Book>() { @Override public Book createFromParcel(Parcel source) { return new Book(source); } @Override public Book[] newArray(int size) { return new Book[size]; } }; }
然后新建一个与要使用实体同名的Book.aidl (必须,如果没有实现这一步将会抛出RuntimeException)
package com.zhl.androiddevtestdemo.ipc; import com.zhl.androiddevtestdemo.ipc.Book; parcelable Book;
最后写图书管理IBookManager.aidl
package com.zhl.androiddevtestdemo.ipc; //导入实体类 import com.zhl.androiddevtestdemo.ipc.Book; interface IBookManager { List<Book> getBookList(); void addBook(in Book book); }
相关文章推荐
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- AIDL进程间传递复杂数据类型—AIDL传递android.os.Parcelable接口
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- Android:使用AIDL实现进程间传递复杂数据类型
- android: activity之间传递复杂数据类型[使用Serializable序列化或者Parcelable序列化]
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型
- 【Android】使用AIDL传递用户自定义类型数据--附完整示例代码
- 使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- android 用Parcelable传递图片等复杂数据类型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法:服务器端和客户端数据类型的自动转换:复杂类型
- Android基础--使用AIDL实现进程间的通信之复杂类型传递
- android 用Parcelable传递复杂数据类型
- Android继承Parcelable接口传递复杂数据类型
- android 用Parcelable传递复杂数据类型
- android 用Parcelable传递复杂数据类型
- 在asp.net AJAX客户端使用复杂数据类型方法
- 在asp.net AJAX客户端使用复杂数据类型方法
- android 用Parcelable传递复杂数据类型
- Android使用AIDL时传递复杂数据对象的写法