193_AIDL的使用
来源:互联网 发布:可视化编程软件哪个好 编辑:程序博客网 时间:2024/05/20 15:37
AIDL的使用
打个比方,一个A应用要调用另一个B应用的服务的方法
假设这个服务就跟支付宝的支付功能一样
MyPayService的pay方法
肯定不能直接调用
那么就要通过代理的方式来调用
这时候就用到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.要拿到B的aidl文件,生成java字节码文件
2.bindService绑定服务
3.写一个ServiceConnection把远程服务传递过来的对象转换成MyPay对象
4.调用方法
- 193_AIDL的使用
- 127_AIDL的使用
- IPC(四)_Aidl的基本使用过程
- Android跨进程通信_aidl使用
- Android开发_aidl工具
- Service详解_AIDL
- 24_aidl绑定远程服务
- Android跨进程通信_AIDL
- 步步为营_Android开发课[11]_AIDL服务学习
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- 使用协议的程序示例(193)
- 数组作数据成员1(改)
- 减少PNG图片大小
- 小蜗牛的打字
- [Leetcode]242. Valid Anagram
- 简单的音乐播放
- 193_AIDL的使用
- LeetCode Excel Sheet Column Number
- Oracle建立表空间和用户
- 数组作数据成员2
- 开发APP中遇到的坑
- HttpClient 组件学习使用
- 输出集合的所有子集
- 194_自定义FastJsonRequest
- 指向学生类的指针(改)