AIDL的实现
AIDL(Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication,IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。
(一) AIDL文件的创建
1.AIDL中参数详解:
接口和方法前不用加访问权限修饰符public,private,protected等,也不能用final,static。
Aidl默认支持的类型包话java基本类型(int、long、boolean等)和(String、List、Map、CharSequence),其他类型需要实现Parcelable接口。
in,out,inout三个字段只可以用于对参数的说明。[in表示是输入参数,out表示是输出参数,可以传出某个参数值,inout表示输入输出参数,先传入参数,处理后传出.]
2. AIDL中客户端和服务端的架构:
使用统一的AIDL接口,必须保证包名,接口名,接口定义都一致,最好采用直接复制。
定义.aidl后缀的文件,gen目录下会自动生成 .java不需要修改
目录结构:
MAidlInterface.aidl文件内容
注意类名与文件名一致
自定义User类需要实现Parcelable接口,并且要在这个类的同一个包下定义一个同名的aidl文件
User.aidl文件:
服务端Service:
(二) 配置及调用
1. 服务端Service配置
2. 客户端调用:
需要先定义一个ServiceConnection:
onCreate()中绑定服务:
OnDestory()中解绑服务:
aidl接口调用:
备注:一定要注意注释部分
(三) 可能遇到的问题:
1. couldn't find import for class
http://blog.csdn.net/jackyu613/article/details/6011564
2.
*以上如有内容随时补充
转载请注明出处