我们先来了解一下Aidl是个什么东西!Aidl官方解释是:为了使其他的应用程序也可以访问本应用程序提供的服务,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口,这个功能是不是跟我们的Contenprovider的功能很相似?其实目的都一样,就是“分享”,一个是分享数据,一个是分享服务。我们知道在android系统中,进程之间是不能共享内存的,一个App只会启动一个进程,我们的Aidl就完美的解决了进程之间的通信问题。
接下来,我们用示例描述一下使用Aidl的具体步骤是咋样的(开发工具是Android studio)!
1、写一个类继承Service,重写onbind方法。在服务里写一个方法,这里模拟支付服务。
public voidservice_pay(){
System.out.println("支付服务");
}
2、写一个aidl文件,将视图切换为project视图,在main目录下创建一个aidl文件,名字为PayInterface(这个名字随你).代码如下:
interfacePayInterface {
void pay();
}
3、将项目同步一下,点击androidstudio工具栏上的同步按钮。会在app项目的build-generated--source--
aidl---debug--生成一个PayInterface.java文件。
4、修改Service的子类,在这个类里建一个内部类继承Stub类。并且在onbind方法里返回该类的对象。classMyBinder extends PayInterface.Stub{
@Override
public voidpay() throws RemoteException {
//调用服务中的支付服务。
service_pay();
}
}
5:在MainActivity里绑定服务。
1;创建Intent,
2:写一个类MyServiceConnection实现ServiceConnection,实现2个方法。
classMyServiceConnection implements ServiceConnection{
@Override
public voidonServiceConnected(ComponentName name, IBinder service) {
//绑定成功。
payInterface= PayInterface.Stub.asInterface(service);
}
@Override
public voidonServiceDisconnected(ComponentName name) {
}
}
3:创建MyServiceConnection对象,绑定服务,
4:调用支付服务,
用payInterface来调用pay方法。
好了。大致的步骤就是这样,有需要的小伙伴不妨一试。