AIDL是Android接口定义语言,它可以用于让某个服务与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个服务的功能。
实现步骤
例:用一个程序去访问B程序的MyService.java服务
-
<李>在B中建立AIDL文件MyAidlService.AIDL,在AIDL文件里写我们的接口方法李>
<李>在MyService中写AIDL文件定义的方法的具体服务逻辑李>
<李>在B的清单文件中,为服务添加行动”com.xyb.servicetest。MyAidlService”用于一个静态来访问服务(这里是因为,如果用动态意图(这个,MyService.class),在一个中没有MyService这个类)李>
<李>把B的AIDL文件夹拷贝到中,一定要注意包的路径依然为B中的路径李>
<李>在中利用静态意图来启动B的服务MyService李>
对应步骤详细代码:
MyAidlService.AIDL
接口MyAidlService { int添加(int, int b); }
MyService。Java
公开课MyService延伸服务{ MyAidlService。存根mBinder=new MyAidlService.Stub () { @Override 公共int添加(int, int b)抛出RemoteException { 返回一个+ b; } }; @Override 公共内部> & lt;服务android: name=?MyService”比; & lt; intent-filter> & lt;行动android: name=" com.xyb.servicetest.MyAidlService "/比; & lt;/intent-filter> & lt;/service>
4。拷贝AIDL文件夹
5.访问B的服务
目的意图=new意图(“com.xyb.servicetest.MyAidlService”); bindService(意图,连接,BIND_AUTO_CREATE);
私人MyAidlService aidlService;
私人ServiceConnection连接=new ServiceConnection () { @Override 公共空间onServiceConnected (ComponentName名称、内部服务){ 日志。d (“onServiceConnected”、“onServiceConnected”); aidlService=(MyAidlService) MyAidlService.Stub.asInterface(服务); 尝试{ int=aidlService求和。添加(10、50);//对10和50相加 日志。d (“onServiceConnected总和+ " "); }抓住RemoteException (e) { e.printStackTrace (); } } @Override 公共空间onServiceDisconnected (ComponentName名称){ } }; >之前以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Android AIDL实现跨进程通信的示例代码