AIDL


创建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)

你可能感兴趣的:(AIDL)