之前写了一篇 Android下使用AIDL进行通信 的文章,仅仅是客户端访问远程service,并且返回数据,这种通过调用service方法,并且由方法返回数据,在很多情况下是不太合适的,比如我需要在service中的方法进行很多操作,而且不同的操作会产生不一样的数据,并且这些数据都是需要返回给客户端的,那么仅仅通过方法返回值来返回数据时远远不够的。那么今天我们就继续来研究如何通过service来回调客户端中的方法。
那么首先需要定义两个AIDL的文件,文件如下:
RemoteService.aidl
package cn.com.aidl.service;
import cn.com.aidl.service.RemoteServiceCallBack;
interface RemoteService{
void pay(in int a,in int b);
void registerCallback(RemoteServiceCallBack callBack);
void unregisterCallback(RemoteServiceCallBack callBack);
}
RemoteServiceCallBack.aidl
interface RemoteServiceCallBack{
void callClientActivity(in int c);
}
那么定义好了这两个AIDL文件,我们首先需要知道,
RemoteService是在服务端实现的,