浅谈Android Aidl 通讯机制
程序员文章站
2024-02-29 08:24:58
服务端:
首先是编写一个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 通讯机制 ,希望对大家有所帮助!
下一篇: Java中保留两位小数的四种方法实现实例