Android Studio AIDL实现

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,客户端的效果:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值