AIDL与HIDL核心概念

目录

一. 概述

二. 核心流程的核心理解

三. 一些术语

四. 参考样例


一. 概述

AIDL和HIDL都是主要用于跨进程通信,本质是Binder通信。

总体流程都是先写.aidl文件或.hal文件,这个文件只有接口定义哦不是实现,然后利用工具自动生成代码,再利用生成的代码写具体接口的实现及调用。

二. 核心流程的核心理解

网上很多说不清楚,不要扯虚头巴脑的一堆,我说下核心流程:

  1. 先.aidl生成代码,比如 IMyAidlInterface.aidl 生成代码,server侧和client侧都要有哦,包名要一样。
  2. Server侧:继承生成代码中的 IMyAidlInterface.Stub 类来实现接口,比如 class MyBinder extends IMyAidlInterface.Stub,因为 service 通信时候你要调用接口所以在 onBind() 中返回该类。
  3. Client侧:onServiceConnected() 里获取刚才准备好的 MyBinder 类,iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service),调用接口的方式就直接 iMyAidlInterface.[接口] 就可以了。

对照我说的流程看一遍实际例子,你会透彻理解!最后部分我提供了优秀博客例子。

.hal 流程一样的,只不过不叫 Proxy 和 Stub ,而是叫 Bp 和 Bn。

三. 一些术语

对于AIDL生成java代码,客户端(client)对应 Proxy,服务端(server)对应 Stub。注意,也可生成c++代码,如今 framework 与 native 通信经常使用。

对于HIDL生成c++代码,客户端(client)对应 Bp(Binder Proxy),服务端(server)对应 Bn(Binder Native)。

本质一样。

可以这样理解,你要去银行存钱,你找个代理人去存,存在ATM里。你是client,银行是server,代理人是proxy,ATM是stub。钱需要是序列化数据Parcel。

通信是 kernel 帮你做的,感兴趣可以深入。

四. 参考样例

编写 AIDL 流程可参考优秀博客:

AIDL - 简书 (jianshu.com)


---------------------
作者:alibli
来源:CSDN
原文:https://blog.csdn.net/weixin_36389889/article/details/125949031#%E6%A6%82%E8%BF%B0
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaowang_lj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值