网站建设主要学什么/深圳seo优化推广

网站建设主要学什么,深圳seo优化推广,大数据开发工程师,我要学电脑哪里有短期培训班在Android中,AIDL(Android Interface Definition Language) 和 HIDL(HAL Interface Definition Language) 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC(进程间通信&#xff0…

在Android中,AIDL(Android Interface Definition Language) 和 HIDL(HAL Interface Definition Language) 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC(进程间通信)机制,而 HIDL 是从 Android 8.0 开始引入,用于 HAL(Hardware Abstraction Layer)模块的接口定义。

随着 Android 的发展,Google 决定从 Android 11 开始将新的 HAL 统

一使用 AIDL 接口,而逐步放弃 HIDL。这种转变背后的原因涉及技术复杂度、性能、开发效率和生态统一性等多个方面。

1. AIDL 和 HIDL 的主要区别

1.1AIDL(Android Interface Definition Language)

用于 Android 系统中 App 层到 Framework 层之间的通信,也可以用于 Service 和 Client 的进程间通信。AIDL 使用 Binder 内核驱动程序进行调用。

AIDL 可以在 Android 中的任何进程之间使用:在平台组件之间使用或在应用之间使用均可。

他的主要的特点是:

  • 语言支持:支持 Java、C++ 和 Kotlin,最初主要服务于 App 层(Java 环境)。
  • 运行时绑定:通过 binder 驱动直接实现进程间通信,适合轻量的高频接口调用。
  • AIDL 文件编译:通过工具生成 Stub 和 Proxy 代码,封装了序列化和反序列化逻辑,开发者只需实现核心逻辑。

1.2 HIDL(Hardware Interface Definition Language)

HIDL 旨在用于进程间通信 (IPC)。使用 HDL 创建的 HAL 称为绑定式 HAL,因为它们可以使用 Binder 进程间通信 (IPC) 调用与其他架构层进行通信。绑定式 HAL 在独立于使用它们的客户端的进程中运行。对于必须与进程相关联的代码库,还可以使用透传模式(在 Java 中不受支持)。

HIDL 可指定数据结构和方法签名,这些内容会整理归类到接口(与类相似)中,而接口会汇集到软件包中。尽管 HIDL 具有一系列不同的关键字,但 C++ 和 Java程序员对 HIDL 的语法并不陌生。此外,HIDL 还使用 Java 样式的注解。

他的主要的特点是:

  • 使用场景:专为 HAL 设计,用于定义硬件抽象层和 Framework 层之间的接口。
  • 语言支持:主要支持 C++,不直接支持 Java。
  • 静态绑定:HIDL 在编译时生成接口代码,运行时通过 hwservicemanager 注册和发现服务。
  • 接口版本化:支持接口的向前兼容和向后兼容,可以在同一个系统中并存多个版本的 HAL 模块。
  • 复杂性:HIDL 引入了较复杂的构建工具链(如 HIDL 编译器)和运行时管理机制。

2. Google 放弃 HIDL,统一使用 AIDL 的原因

2.1 简化开发和维护

  • 减少学习成本:
    HIDL 的学习曲线较陡,开发者需要熟悉 HIDL 特有的语法和工具链,而 AIDL 更加简单直观,开发者容易上手。

  • 统一接口开发方式
    将 HAL 和应用层接口统一为 AIDL,减少了系统中不同接口定义语言的种类,便于开发者在不同层级使用相同的工具和模式。

2.2 降低系统复杂性

HIDL 的工具链和运行时机制引入了额外的复杂性,比如 hwservicemanager 和接口的版本化管理,而 AIDL 的实现相对简单,使用单一的 binder 机制即可满足需求。

2.3 性能优化

AIDL 在轻量通信场景下性能优于 HIDL:

  • 序列化和反序列化效率高:AIDL 的传输格式更加精简。
  • 运行时绑定更灵活:无需像 HIDL 那样依赖 hwservicemanager,可以减少通信开销。

对于大多数硬件接口调用场景,AIDL 的性能足以满足需求,HIDL 的版本管理和静态绑定机制显得多余。

2.4 推动 Kotlin 和 Rust 的生态

AIDL 逐步扩展了对 Kotlin 和 Rust 的支持(尤其是在安全性上),这是 Google 推动现代语言生态的重要一步。相比之下,HIDL 偏向 C++,缺乏对新语言的良好支持。

2.5 接口版本化的简化

尽管 HIDL 的多版本支持机制强大,但实际使用中却增加了维护成本。AIDL 的接口版本化从 Android 10 开始进行了改进,通过 stable AIDL 提供了更简洁的方式来处理接口的向前和向后兼容性问题。

3.举例说明

就拿音频举例,AIDL 实现与 HIDL 音频 HAL 实现之间的区别:

  • 在 AIDL 音频核心 HAL 中,引入了新的 IConfig 接口,替代了 HIDL HAL 中通过 XML 文件定义的系统级参数。这些参数现在由框架直接从 Core HAL 读取,而不再依赖供应商提供的配置文件。例如,用于显示给用户以便控制的环绕声格式列表,现由 IConfig.getSurroundSoundConfig 方法直接提供。
  • 在 AIDL 音效 HAL 中,原先在 HIDL 音效 HAL 的 XML 文件中定义的 effectProxy 相关逻辑已迁移到音频框架中。框架通过调用 IFactory.queryEffects 方法获取系统中所有效果实例的列表,并使用 IFactory.queryProcessing 方法查询所有效果处理信息。
  • 为了避免“设备”一词在描述音频设备类型时可能产生的歧义,HIDL 音频 HAL 中的 IDevice 接口在 AIDL 音频 HAL 中被重新命名为 IModule。
  • 此外,IPrimaryDevice 接口已被移除并由新的机制替代。现在,系统会将当前音频模式和屏幕旋转方向的更新发送到每个 IModule 实例。而涉及蓝牙同步音频连接(如 BT SCO)和免提配置文件(HFP)的参数,则由独立的 IBluetooth 接口管理。与电话相关的控制由专用的 ITelephony 接口提供支持。这两个接口的实例都可以通过 IModule 接口的主实例来获取。更多细节可参见核心 HAL 与相关功能的对比表。
  • 与此同时,为了避免冗余,AIDL 音频 HAL 中移除了 IDevicesFactory 接口。HAL 模块(即 IModule 的实例)现在直接以其名称在 Service Manager 中注册,例如 bluetooth 或 r_submix。唯一的例外是主模块(primary module),它仍然以 default 作为实例名称进行注册。

4.接口映射内容:

所有 HIDL 接口都在 android.hardware.audio@N.M 软件包中,其中 N.M 表示 Major.Minor 版本。所有 AIDL 接口都在 android.hardware.audio.core 软件包中。

HIDL API 接口和配置文件AIDL API接口
IDevicesFactory在 ServiceManager注册 IModule。
IDeviceIModule
IPrimaryDeviceITelephony / IBluetooth
IStream /IStreamIn / IStreamOutStreamDescriptor /IStreamIn / IStreamCommon / IStreamOut
audio_policy_configuration.xml / audio_policy_engine_configuration.xmlIConfig / IModule
可配置的音频政策文件在 Android 14 中使用HbL妥现。

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用android studio模拟器,模拟安卓手机访问网页,使用Chrome 开发者工具查看控制台信息

web 网页项目在安卓手机打开时出现问题,想要查看控制台调试信息。记录一下使用android studio 模拟器访问的方式。 步骤如下: 1.安装android studio,新增虚拟设备(VDM- virtual device manager) 点击Virtual Device Manager后会…

spring-boot-starter和spring-boot-starter-web的关联

maven的作用是方便jar包的管理,所以每一个依赖都是对应着相应的一个或者一些jar包,从网上看到很多对spring-boot-starter的描述就是“这是Spring Boot的核心启动器,包含了自动配置、日志和YAML。”没看太明白,所参与的项目上也一直…

数智读书笔记系列015 探索思维黑箱:《心智社会:从细胞到人工智能,人类思维的优雅解读》读书笔记

引言 《The Society of Mind》(《心智社会》)的作者马文・明斯基(Marvin Minsky),是人工智能领域的先驱和奠基者之一 ,1969 年获得图灵奖,被广泛认为是对人工智能领域影响最大的科学家之一。他…

【网络编程】WSAAsyncSelect 模型

十、基于I/O模型的网络开发 接着上次的博客继续分享:select模型 10.8 异步选择模型WSAAsyncSelect 10.8.1 基本概念 WSAAsyncSelect模型是Windows socket的一个异步I/O 模型,利用这个模型,应用程序 可在一个套接字上接收以Windows 消息为基…

计算机网络:计算机网络的组成和功能

计算机网络的组成: 计算机网络的工作方式: 计算机网络的逻辑功能; 总结: 计算机网络的功能: 1.数据通信 2.资源共享 3.分布式处理:计算机网络的分布式处理是指将计算任务分散到网络中的多个节点(计算机或设备&…

字符串习题

单词个数统计 原作: 输入: 一行字符串。仅有空格和英文字母构成。 输出: 英文字母个数letter_num 单词个数word_num 出现最多的字母max_letter 出现最多的字母的出现次数max_letter_frequ 处理: 统计并输出此句子英文字母…

解决火绒启动时,报安全服务异常,无法保障计算机安全

1.找到控制面板-安全和维护-更改用户账户控制设置 重启启动电脑解决。

python总结(1)

数据结构是以某种方式(如通过编号)组合起来的数据元素(如数、字符乃至其他数据结构)集合。在Python中,最基本的数据结构为序列(sequence)。序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引为1…

NAT NAPT

NAT NAT(Network Address Translation,网络地址转换) 主要用于在不同网络(如私有网络和公共互联网)之间进行 IP 地址转换,解决IP 地址短缺问题,并提供一定的安全性。 IPv4 地址是 32 位&#xf…

快速排序(二叉树的前序递归遍历思想)

思路 之前我们从选择排序,到选择排序的稳定性优化,到冒泡排序,到插入排序,到插入排序的提前截止时间,到希尔排序,虽然逐步一直都在优化,但是时间复杂度还是N得平方,力扣提交的结果一…

Redis 面试篇

Redis相关面试题 缓存三剑客 面试官:什么是缓存穿透 ? 怎么解决 ? 缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况…

群晖DS223 Docker搭建为知笔记

群晖DS223 Docker搭建为知笔记,打造你的专属知识宝库 一、引言 在数字化信息爆炸的时代,笔记软件成为了我们管理知识、记录灵感的得力助手。为知笔记,作为一款专注于工作笔记和团队协作的云笔记产品,以其丰富的功能和便捷的使用体…

Linux网络之数据链路层协议

目录 数据链路层 MAC地址与IP地址 数据帧 ARP协议 NAT技术 代理服务器 正向代理 反向代理 上期我们学习了网络层中的相关协议,为IP协议。IP协议通过报头中的目的IP地址告知了数据最终要传送的目的主机的IP地址,从而指引了数据在网络中的一步…

分类评价指标

基础概念解释 TP、TN、FP、FN 这里T是True,F是False,P为Positive,N为Negative TP:被模型正确地预测为正样本(原本为正样本,预测为正样本) TN:被模型正确地预测为负样本&#xff0…

江科大51单片机笔记【11】AT24C02(I2C总线)

一、存储器 1.介绍 RAM的特点是存储速度特别快,但是掉电会丢失;ROM的特点是存储速度特别慢,但是掉电不会丢失 SRAM是所有存储器最快的,一般用于电脑的CPU高速缓存,容量相对较少,成本较高;DRAM…

【C++指南】一文总结C++类和对象【中】

🌟 各位看官好,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C类和对象的语法知识。注意:在本章节中,小编会以Date类举例 👍 如果觉得…

文本转语音-音画适时推送rtsp并播放

文本语音 rtsp适时播放叫号系统的底层逻辑 发布Linux, unix socket 和window win32做为音频源的 python10下的(ffmpeg version 7.1) 可运行版本. 这两天在弄这个,前2篇是通过虚拟声卡,达到了最简单的一个逻辑,播放文本就从声卡发声&#xff0…

从0开始的操作系统手搓教程33:挂载我们的文件系统

目录 代码实现 添加到初始化上 上电看现象 挂载分区可能是一些朋友不理解的——实际上挂载就是将我们的文件系统封装好了的设备(硬盘啊,SD卡啊,U盘啊等等),挂到我们的默认分区路径下。这样我们就能访问到了&#xff…

【图片批量转换合并PDF】多个文件夹的图片以文件夹为单位批量合并成一个PDF,基于wpf的实现方案

项目背景: 多个图片分布在不同文件夹,如何以文件夹为单位批量合并成一个PDF,还要保证文件夹里面图片大小和顺序 实现功能: 1、单张图片的转换PDF:一张图临时转一下 2、多张图片转换成PDF:多张图单独转成PDF 3、多级目录多张图转换成PDF:多级目录多张图单独转成多个PDF…

如何用Kimi生成PPT?秒出PPT更高效!

做PPT是不是总是让你头疼?😩 快速制作出专业的PPT,今天我们要推荐两款超级好用的AI工具——Kimi 和 秒出PPT!我们来看看哪一款更适合你吧!🚀 🥇 Kimi:让PPT制作更轻松 Kimi的生成效…