AIDL的实现和注意点

AIDL的目的是:可以将业务型应用的功能通过aidl的方式开放给其他应用实现,比如支付宝的支付功能,给淘宝用。


一:根据需求,生成一个aidl接口的jar包,生成jar包,为了避免需求方和公司定义的aidl不统一,而且只要维护这个jar包就行了


1,创建一个android工程,定义aidl工程

2,aidl接口定义,必须在xx.xx.xx.aidl的package下面


接口定义

3,如果返回值有自定义类型的,自定义数据类也要放在xx.xx.xx.aidl的package下面,并且要定义一个自定义类型接口的aidl,同时自定义数据类型要实现Parcelable。另外返回自定义数据类的接口,记得import该数据类。


自定义数据类的aidl


自定义数据类实现Parelable


返回自定义类的接口,记得import

4、生成jar包,将改android工程勾上 is library 变成依赖工程,然后让其他工程依赖他,编译被依赖工程的时候就会在该依赖工程的bin下面生成可用的jar包,然后给客户端和服务端的aidl工程使用;


该工程为依赖工程


二:aidl客户端和服务端的实现

1、客户端要定义ServiceConnection

public ISystemManager mISystemManager;//aidl接口

ServiceConnection

2、然后通过bingdService连接上上去

context.bindService(explicitIntent,serviceConn, Context.BIND_AUTO_CREATE);

3,客户端调用aidl接口,具体功能,服务端实现

调用用aidl接口

服务端定义一个setvice,onBind返回实现接口stub的类

@Override

publicIBinder onBind(Intentintent) {

mISystemManagerService=this;

returnnewISystemManagerStub();

}


继承aidl接口的stub

到此客户端调用接口,服务端这边实现接口的流程就结束了。

三:AIDL监听器的实现

有的时候,aidl接口中还有一些监听器,比如卸载的回调等,思路是客户端实现监听aidl的stub,服务端传递参数回调回去。

监听器aidl的定义和在其他aidl接口中的位置:

定义监听器aidl接口和普通的aidl接口一样

监听器aidl接口
监听器aidl类在其他aidl类中,做入参操作

服务端有监听器实现:

获取到客户端传来的监听器对象,然后调用监听aidl的接口方法,将值传递回去

服务端传递参数


客户端监听器实现

客户端监听器的实现

注意点:

下面是AIDL能支持的数据类型:入参和出参;

Java编程语言的主要类型(int, boolean等)—不需要import语句。

以下的类(不需要import语句):

String

List-列表中的所有元素必须是在此列出的类型,包括其他AIDL生成的接口和可打包类型。List可以像一般的类(例如List)那样使用,另一边接收的具体类一般是一个ArrayList,这些方法会使用List接口。

Map- Map中的所有元素必须是在此列出的类型,包括其他AIDL生成的接口和可打包类型。一般的maps(例如Map)不被支持,另一边接收的具体类一般是一个HashMap,这些方法会使用Map接口。

CharSequence-该类是被TextView和其他控件对象使用的字符序列。

通常引引用方式传递的其他AIDL生成的接口,必须要import语句声明

实现了Parcelable protocol以及按值传递的自定义类,必须要import语句声明。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,405评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,962评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,958评论 6 342
  • 当老师是我一直以来的梦想。 一直以来,都在为完成它而努力。大学选的师范专业,读研也是因为本科学校的文凭给我的选择余...
    向小萍阅读 1,123评论 2 3
  • 邹晓一个人蜷缩在小巷的角落,她紧紧靠着一个废弃的铁桶,铁桶散发出阵阵恶臭,似乎真的是很久很久无人问津了。邹晓顾不得...
    枚橙roro阅读 256评论 0 2