Android中AIDL的使用

AIDL(Android接口定义语言)
---------------------------------
AIDL用于定义跨进程通信时需要使用到的接口,即当多个应用程序都需要使用到相关的接口时,应该使用AIDL来定义。
【使用AIDL定义接口的步骤】
1. 使用一般的创建interface的方式创建Java接口文件
2. 将创建的interface的权限删掉,即例如public interface IMusicPlayer修改为interface IMusicPlayer
3. 打开Windows的资源管理器,找到该接口文件,修改扩展名为aidl


AIDL的数据类型
---------------------------------
AIDL默认只识别:
1. 基本数据类型,例如int、long、float、boolean等……
2. String,CharSeqence
3. List
自定义数据类型:
1. 自定义类,例如Music,并且实现Parcelable接口
2. 添加自定义类的aidl文件,例如Music.aidl,在该文件中,只需要package语句,和parcelable 类名,例如parcelable Music,即可
3. 在aidl接口文件中,显式的添加import语句,导入自定义的数据类型,例如import cn.tedu.ipc.Music,无论当前aidl接口文件与自定义类的aidl文件是否在同一个包中,都必须显式的导包
4. 当跨进程访问时,访问者(客户端)需要将服务
端的aild接口文件、实体类的java文件、实体类的aidl文件全部复制到客户端,并且,保证包名与服务器端是一致的


Parcelable接口
---------------------------------
实现步骤:
1. 自定义类,例如Music,实现Parcelable接口
2. 重写describeContents()方法,直接返回0即可
3. 重写writeToParcel()方法,调用第1个Parcel类型的参数的write???系列方法,将当前类(Music)类的成员写出
4. 自定义readFromParcel(Parcel src)方法,根据第3步骤中调用wite???系列的顺序,依次调用Parcel参数的read???系列方法,并为当前类(Music)的各个成员赋值
5. 自定义当前类(Music)的带Parcel参数的构造方法,并在构造方法中调用readFromParcel()
6. 声明public static final Parcelable.Creator<Music> CREATOR常量,并使用匿名内部类的语法直接赋值,在匿名内部类中,public Music[] newArray(int size)方法直接返回new Music[size]即可,public Music createFromParcel(Parcel src)中,直接返回通过构造方法创建对象即可。

posted @ 2016-03-05 17:43  fighting9527  阅读(389)  评论(0编辑  收藏  举报