AIDL:Android Interface Definition Language,即Android接口定义语言.
android studio中使用aidl实现跨进程通讯,具体步骤如下:
一:服务端
第一步:第一步:通过as创建一个aidl文件,在app右键,如下图:
输入自己想要的名字,别的都默认,点击Finish 我这里的名字叫 CalculateAidlInterface创建好如下:
再看看 CalculateAidlInterface.aidl 里面怎么写的,其实就一个计算的方法 客户端传2个int类型的值,服务端计算和
第二步:CalculateAidlInterface.aidl 编写完成之后 需要Build–>Make Module app,生成相应的java文件,如下图:
第三步:接下来,就该完成我们的CalculateAidlService逻辑部分了,CalculateAidlService.java代码如下:
先说下我遇到的坑,我是通过as右键创建的service 他自动会加上下面2个属性 就会导致客户端调用不起来,所以记得一定要删除
android:enabled=”false”
android:exported=”false”
再来看下AndroidManifest.xml中CalculateAidlService的配置:action是客户端调用用到的
服务端就已经完成了。接下来我们来看一下客户端的:
二:客户端
第一步:同样需要和服务端一样创建aidl文件,可以把服务器的原封不动的复制过来,包括包名
第二步:再次执行 Build–>Make Module app
再来看下客户端怎么调用的?
第三步:先创建一个ServiceConnection 对象
private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName arg0) {
}
@Override
public void onServiceConnected(ComponentName name, IBinder binder) {
//获取远程Service的onBinder方法返回的对象代理
service = CalculateAidlInterface.Stub.asInterface(binder);
if (service != null) {
int calculation = 0;
try {
calculation = service.calculationAddition(1, 2);
} catch (RemoteException e) {
e.printStackTrace();
}
text.setText("我是客户端:calculationResult = " + calculation);
}
}
};
第四步:绑定
第五部:调用
第六步:不用的时候解除绑定
到此代码就全部结束了,简单吧,下面我们来看一下效果如何:
1,服务端的效果
2,客户端的效果: