欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

浅谈Android Aidl 通讯机制

程序员文章站 2024-02-26 19:36:16
服务端: 首先是编写一个aidl文件,注意aidl只支持方法,不能定义静态成员,并且方法也不能有类似public等的修饰符;aidl运行方法有任何类型的参数和返回值,...

服务端:

首先是编写一个aidl文件,注意aidl只支持方法,不能定义静态成员,并且方法也不能有类似public等的修饰符;aidl运行方法有任何类型的参数和返回值,在java的类型中,以下的类型使用时不需要导入包(import),基本数据类型、string、map、list.当然为了避免出错,建议只要使用了,就导入包。

然后在服务端启动一个服务并注册,编写一个任意类实现aidl文件生成的java接口stub!

最后在service里面实例化你的任意类并且在onbind(intent a)方法上面返回你任意类的对象!

客户端:

首先把你在服务端的aidl文件完整的复制过来一份,并且保证包名一样

然后调用bindservice方法绑定你在服务端创建的方法mcontext.bindservice(intent, mserviceconnection, 0);

其中mserviceconnection是重点:

private serviceconnection mserviceconnection = new serviceconnection() {
@override
public void onserviceconnected(componentname name, ibinder service) {//连接上服务器时调用
mservice = iremoteservice.stub.asinterface(service);
}
@override
public void onservicedisconnected(componentname name) {//没连上调用
mservice = null;
}
};

其中mservice就是服务端的aidl对象,我们可以通过它来给服务端的方法赋值

其中的传的intent要注意必须提供一个intent-filter来匹配请求是否合法,所以我们在客户端访问服务的时候,还必须传递包含了匹配action的intent哦。

以上内容是小编给大家介绍的android aidl 通讯机制 ,希望对大家有所帮助!