Android AIDL解惑 什么时候使用,该怎么使用?

1 AIDL 什么时候使用?

AIDL是Android中IPC(Inter-Process Communication)方式中的一种,AIDL是Android Interface definition language的缩写。

作为进程间通信的重要方式之一?什么时候需要用到呢?

场景1 现在你的应用需要强制保活,产品经理要求做进程保活,在应用中多开一个进程,用来与主进程进行心跳监听,如果有一个进程挂掉,另外一个进程将它拉起。这种需求常用于定制性设备的主应用。

场景2 要求两个应用间可以进行数据传递。应用1跟应用2是两个公司开发的,但是应用1需要对应用2进行命令下发,数据下发。或者同事应用2也需要对应用1进行数据下发。

 

2 该如何使用

aidl一般数据发送方被称为服务端,接受端称为客户端。拿场景2来说,如果现在是两个应用需要双方数据通信,接受方收到数据数据后将会给服务端一个接受成功的回调。两个应用即是客户端又是服务端。

A 第一步在应用中创建aidl文件夹,目录如下

在aidl文件夹中再建立一个文件夹,存放aidl相关文件。

现在举个应用间传递对象格式,和字符串的例子

B 在aidl文件夹中创建需要的类

 

方法1.2分别是两个提供数据传递的方法,参数就是数据类型

传递对象的时候我们看到参数名前有个in 的修饰词,我们看下图,bean对象的创建比正常的复杂一些,首先要创建一个正常的java类对象继承Parcelable,第二步在创建aidl格式的bean对象,内部很简单,只有parcelable ProgrammeBean,parcelable 修饰的类名即可。

 

3.4方法就是aidl使用回调时都需要使用的方法,一个注册回调一个注销回调,我们再看下回调方法内部


C 在逻辑代码中使用aidl

第一步创建一个service

service中的具体实现在Mystub类中看

集成我们写的aidl的stub,实现内部的方法,红框内的就是回调相关的注册,注销,以及接受到其他应用的数据后的回调方法的调用。对方发过来的数据都是在这个类中去获取。

接下来 我们需要在页面中去绑定交互方的服务,调用bindservice,写明action,对方包名

bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);

这个就是监听于交互端的绑定状态。

然后如果去下发数据对交互方就只需要调用

总结:使用的大致流程就是这些了,是不是很简单。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值