Android HIDL学习(5) ---- 设计要素

本文深入探讨了HIDL(Hardware Interface Definition Language)的设计目标与理念,包括可互操作性、效率与直观性。HIDL旨在简化系统更新流程,无需重新编译HAL模块,通过版本控制实现接口更新。同时,HIDL通过RPC、共享内存和FMQ等多种通信方式提高进程间通信效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面我们学习了如何使用HIDL来设计或者重构之前在HAL层的代码,而且也对比了一些高性能的编程方式,这里我们在来一下Android的HIDL在设计上的一些考虑。

HIDL指定了数据结构和方法的命名,这些命名类似于JAVA中的类,所以HIDL的语法对于C++和JAVA程序员来说是非常熟悉的,尽管有些关键字不怎么相同,HIDL还使用JAVA的注释方式。

HIDL设计目标

HIDL的设计目标是为以后系统更新的时候不用重新编译HAL的模块,HALs被供应商或者SOC厂商负责被编译成vendor.img烧录到系统的/vendor 分区。这样子在后面系统更新的时候只需要更新vendor分区,不需要更新整个OTA包。

HIDL的设计理念平衡一下三个要素:

可互操作性:在进程中创建可靠的可互相调用的接口,这种接口偶可以通过不同的交叉编译和和配置来编译成不同的架构。HIDL接口是通过版本来定义的,不同版本的接口可以在发布之后改变。

效率:HIDL的设计在进程通信间尽可能最小化拷贝的动作。HIDL定义的数据在C++标准布局数据结构中被传递到C++代码,这些数据结构可以在不解包的情况下使用。由于使用进程间通信会比直接调用来的慢,HIDL也提供了共享内存的方式,HIDL除了RPC通信外,还提供另外两种方式进行数据传输:内存共享和快速消息队列(FMQ)。

直观性:HIDL只有在两个进程需要RPC通信时才使用,从而避免了内存所有权的问题,数据值可以被方法或者回调函数有效的得到返回。将数据传递到HIDL进行传输或者从HIDL接收数据都不会更改数据的所有权,而始终保留在调用函数中。数据只需要在被调用函数的持续时间内保持,并且可以在被调用函数返回后立即销毁。

HIDL语法详细参考下面链接:

https://source.android.com/devices/architecture/hidl


 

### CSS伪类选择器的具体用法 CSS伪类选择器是一种用于匹配元素特定状态的选择器,它使得开发者可以基于用户的交互行为或者页面结构的变化来定义样式。以下是常见的几种伪类选择器及其具体用法和示例代码。 #### `:link` 和 `:visited` `:link` 用于未访问过的链接,而 `:visited` 则针对已访问过的链接。这两种伪类通常一起使用以区分不同状态下的超链接颜色或其他样式[^3]。 ```css a:link { color: blue; } a:visited { color: purple; } ``` #### `:hover`, `:active`, and `:focus` 这些伪类分别表示鼠标悬停、点击激活以及获得焦点的状态。它们常被用来增强用户体验,比如按钮高亮显示或输入框聚焦时的效果[^3]。 ```css button:hover { background-color: lightgray; } button:active { transform: scale(0.98); } input:focus { outline: 2px solid green; } ``` #### `:focus-within` 当某个容器内的子元素获取到焦点时,该容器会应用此伪类所指定的样式。这对于表单控件特别有用[^3]。 ```css div:focus-within { border: 2px dashed orange; } ``` #### `:target` 如果一个URL指向了一个ID,则带有相应ID的HTML元素将成为目标元素,并可由`:target`伪类选中并施加特殊样式。 ```css section:target { background-color: yellow; } ``` #### `:root` `:root` 表示文档的根元素,在 HTML 中总是指代 `<html>` 元素。它可以作为全局变量的作用域起点[^3]。 ```css :root { --main-bg-color: white; } body { background-color: var(--main-bg-color); } ``` #### `:checked` 适用于单选按钮 (`<input type="radio">`) 或复选框 (`<input type="checkbox">`) 被选中后的样式调整[^3]。 ```css label input[type=checkbox]:checked + span { text-decoration: line-through; } ``` 以上就是部分常用CSS伪类选择器的功能介绍及其实现方式的例子。利用好这些工具可以帮助构建更加动态且互动性强的网站界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值