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(..



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 70岁老人耳朵聋怎么办 血压太低了头晕怎么办 血压高忽然变低怎么办 血压高眼睛红了怎么办 高血压200降不下去.怎么办 高血压吃药降不下来怎么办 合肥房子卖了户口怎么办 吃了粽子胃难受怎么办 突然血压高怎么办需要吃药吗? 胃一阵阵疼然后拉肚子怎么办 橱子和墙壁不平怎么办 复印选项是英文不认识怎么办 防盗门锁与门框结合不好怎么办 仿瓷涂料墙壁脏了怎么办 油笔画到墙纸上怎么办 水笔画在墙纸上怎么办 屋里有股石灰味怎么办 厨房太阳对着晒怎么办 房子有太阳西斜怎么办 房子晒到太阳很热怎么办 房子被太阳热了怎么办 房间西晒窗帘不遮光怎么办 新建房屋一面墙体有裂缝怎么办 卫生间地砖缝隙出现渗水怎么办 西户窗户太晒怎么办 西晒的墙面很烫怎么办 儿童房颜色太粉了怎么办? 小孩在家里偷钱怎么办 脾气不好的猫该怎么办 二年孩子偷钱怎么办 孩子偷钱2000报警怎么办? 我儿子十岁老是偷钱怎么办 13孩子偷同学钱怎么办 孩子偷同学的钱怎么办 儿子十四岁了老偷钱怎么办 发现初中生的儿子偷钱怎么办 被亲戚怀疑儿子偷钱怎么办 房门选的太白了怎么办 大厅地砖颜色比墙砖浅怎么办 房屋外墙渗水物业不管怎么办 走丢了怎么办教学反思