aidl 使用案例简介
来源:互联网 发布:mac oracle ide 编辑:程序博客网 时间:2024/05/22 01:47
参考网络上一个计算加法的案例实现一个aidl跨应用远程调用
一个是服务使用者:aidlTestCline 结构如图一
一个是服务提供者:aidlTestServer 结构如图二
图一
图二
首先我们看到aidlTestCline与aidlTestServer都有一个IAdditionService.aidl,并且包名相同这个很关键。这个aidl文件就是服务提供者要暴露给服务请求者的方法。类容如下:
IAdditionService.aidlpackage com.hss.aidl;interface IAdditionService{ int add(int num1,int num2);}
对,没错,就是一个接口,会在gen文件夹生成对应的IAdditionService.Java文件,具体类容就不拷贝了。
接下来我们来看看aidlTestServer是如何实现这个服务的,由于电脑加密了故只能截图了:
主要是看内部类myRemountBinder
该类继承自IAdditionService.aidl自动生成的IAdditionService.java里面的Stub,实现add方法,这个add方法将可以被外部调用了。
在AndroidManifest.xml里面注册一个action
<service android:name="com.hss.aidl.aidltestserver.calculationFunctionService"> <intent-filter> <action android:name="com.hss.aidl.remount_service"/> </intent-filter> </service>
好接下来看看服务请求者是怎么做的,我们知道服务请求者也必须有一个IAdditionService.aidl,这儿与服务端是一模一样的同时也会在gen中生成一份一模一样的java文件并且
包名相同。接下来就是看他如何调用了
首先客户端需要绑定这服务提供的service
Intent intent = new Intent();intent.setAction("com.hss.aidl.remount_service");bindService(intent,rconnectionservice, BIND_AUTO_CREATE);注意rconnectionservice参数,即activity绑定service是连接器ServiceConnection rconnectionservice = new remountConnectionService (); public class remountConnectionService implements ServiceConnection{@Overridepublic void onServiceConnected(ComponentName arg0, IBinder arg1) { rservice =IAdditionService.Stub.asInterface(arg1);//得到远程service实例} @Overridepublic void onServiceDisconnected(ComponentName arg0) {// TODO Auto-generated method stub} }从上可以看出当客户端绑定服务端的service后在连接的时候获取服务端实例。接下来就可以在需要用到服务端暴露的add方法时使用rservice.add(..
- aidl 使用案例简介
- AIDL使用案例
- AIDL使用案例
- aidl的使用简介
- Android中AIDL的使用的案例
- AIDL简介
- AIDL简介
- AIDL简介
- AIDL简介
- AIDL简介
- AIDL简介
- 使用AIDL方式实现播放音乐的案例.txt
- android-aidl-入门-案例
- 24 AIDL案例
- 使用AIDL
- AIDL使用
- AIDL使用
- AIDL使用
- Android Studio方法注释模板
- 深入理解Java之泛型
- runOnUiThread(new Runnable())
- Java 中char是如何编码的
- myeclipse选中变量 相同变量名不会变色
- aidl 使用案例简介
- 小括号内联复合表达式
- Android自助餐之AsyncTask
- iOS学习之——Notification补充
- React Native初认识
- RxJava操作符 debounce 和 distinctUntilChanged
- Android之属性动画
- 具有自动截断功能的函数:对比:strcpy、strncpy、sprintf、snprintf在写入的数据大于缓冲区的情况下如何处理
- javascript 闭包详解+示例(一)