193_AIDL的使用

来源:互联网 发布:可视化编程软件哪个好 编辑:程序博客网 时间:2024/05/20 15:37

AIDL的使用

打个比方,一个A应用要调用另一个B应用的服务的方法

假设这个服务就跟支付宝的支付功能一样

MyPayServicepay方法

肯定不能直接调用

那么就要通过代理的方式来调用

这时候就用到AIDL

 

AIDL

Android Interface Definition Language

android接口定义语言

就是用来进程间通信

 

 

步骤

 

我们要在支付应用里面写一个AIDL文件

就是一个接口

interface MyPay{

String pay(int money);

}

注意,aidl里面不能有权限修饰符

 

然后系统就用sdk文件夹里的platform-tools里的aidl.exe

自动帮我们生成了一个代理对象

是在gen目录下的

MyPay.java

 

我们打开看一下就发现多了很多很多东西

反正我们也看不懂

 

然后我们看见这个MyPay接口里面

还有一个抽象类

abstract class Stub extends Binder implements MyPay

 

 

 

然后这个aidl文件也拷贝到A应用里面

注意包名也要一样

包名一样,aidl文件一样,所以生成的java文件应该也是一样的

现在A应用和B应用都有一样的字节码文件了

 

 

然后是PayService

public class MyPayService extends Serivce{

public IBinder onBinder(Intent intent){

return new MyPay.Stub(){

public String pay(int money){

return MyPayService.this.pay();

}

};

}

 

private String pay(int money){

return money;

}

}

 

注册一下服务

<service android:name=”com.lichhowger.MyPayService”>

<intent-filter>

<action android:name=”com.mypay.service”/>

</intent-filter>

</service>

 

 

然后我们在A应用绑定服务

参数:

1.intent

2.ServiceConnection

3.flag

 

Intent intent=new Intent();

intent.setAction(“com.mypay.service”);

 

MyPayServiceConnection connection=new MyPayServiceConnection();

 

bindService(intent,connection,Service.BIND_AUTO_CREATE);

 

//自己来个内部类

class MyPayServiceConnection implements ServiceConnection{

public void onServiceConnected(ComponentName name,IBinder service){

//将远程服务传递过来的对象转换为MyPay对象

MyPay mypay=MyPay.Stub.asInteface(service);

}

public void onServiceDisconnected(ComponentName name){

 

}

}

 

调用方法

 

mypay.pay(“99”);

 

 

总结

 

应用B:

1.要写一个aidl文件

2.要写一个服务,然后返回IBinder代理对象

 

应用A:

1.要拿到Baidl文件,生成java字节码文件

2.bindService绑定服务

3.写一个ServiceConnection把远程服务传递过来的对象转换成MyPay对象

4.调用方法

 

 

 

 

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩做事拖拉 没时间观念怎么办 execl表中日期加3.5怎么办 狗狗喜欢咬人怎么办 烧烤一顿吃多了怎么办 派派背包食物不足怎么办 未转变者下不了怎么办 小升初户籍与房产不一致怎么办 小孩在外地读书怎么办计生证明 泉州居住证要半年小孩读书怎么办 孩子上学有兰山户口没有房产怎么办 培训机构跑路了怎么办 报的培训班跑路怎么办 巡视组举报后会怎么办 巡视组交办不办怎么办 分手以后还要不要联系忘不了怎么办 父母穷且不上进怎么办 惹父母生气了该怎么办 小孩戒奶不吃奶粉怎么办 孩子听不进去话怎么办 异性好朋友喜欢自己亲吻自己怎么办 对方对你反感了怎么办 家长偷看孩子日记老师怎么办 儿子与父母相冲怎么办 初二孩子不争气老师打他怎么办? 孩子被老师打又怎么办 家里2个孩子打架怎么办 一年级的学生特别会顶嘴怎么办 私立学校的学生顶嘴老师该怎么办 孩子做错事家长不道歉怎么办 孩孑语文成绩差怎么办 高三了孩子不愿意补课怎么办 四年级的孩子上课喜欢讲小话怎么办 五年级孩子太叛逆怎么办 二年级话唠孩子怎么办 家有老人带孩子怎么办 不会看孩子。孩子一哭就害怕怎么办 孩子不老实爱动怎么办 4周孩子脾气大怎么办 老公脾气暴躁爱骂人怎么办? 当妈妈了脾气不好怎么办 父亲很坏不顾家很会赌钱怎么办