创建AIDL通讯的步骤:
1.服务端编写AIDL文件(自定义的数据类型要手动导包import com.你的自定义数据类)
2.服务端编写AIDL对应的Service
3.服务端在manife中设置service为外界可调用
4.拷贝服务端AIDL文件到客户端中(包名要一致)
5.客户端通过Intent设置服务端Service的包名、action连接服务
6.多AIDL可通过Binder池来进行管理
新写的两个Demo
AIDL客户端:https://github.com/soulListener/IBinderClient
AIDL服务端:https://github.com/soulListener/IBinderServer
AIDL:IPC 、多个应用程序 、多线程
Binder: 只有IPC、 没有多线程 、多个应用程序
Messager:只有IPC 、没有多线程
demo下载地址:https://github.com/soulListener/AIDLPro.git
1、AIDL定义:
interfaceIMyAidlInterface{
//计算两个数的和
intadd(intvalue1,intvalue2);
}
定义完成之后要对项目进行编译,并且客户端与服务端AIDL文件要一致
2、要想使用AIDl就要通过Service来调用
public class AidlService extends Service{
@Nullable
@Override
publicIBinder onBind(Intent intent) {
return newIMyAidlInterface.Stub() {
@Override
public intadd(intvalue1,intvalue2)throwsRemoteException {
returnvalue1+value2;
}};}}
3、使用方式:
绑定服务
aidlService=(AidlService)IMyAidlInterface.Stub.asInterface(iBinder);
AIDL定义方法支持byte int long boolean float double char String
List、Map中存放的类型必须是基本数据类型(标明 in out 还是inout)
实现Parcelable(标明 in out 还是inout)
网友评论