当前位置: 首页 > article >正文

OpenHarmony OS 5.0与Android 13显示框架对比

1. 架构概述

1.1 OpenHarmony OS 5.0架构

OpenHarmony OS 5.0采用分层架构设计,图形显示系统从底层到顶层包括:

  • 应用层:ArkUI应用和第三方应用
  • 框架层:ArkUI框架、窗口管理API
  • 系统服务层:图形合成服务、窗口管理服务、ArkGraphics
  • 内核层:内核抽象层(KAL)支持多内核(Linux/LiteOS/HarmonyOS微内核)

与早期版本的HarmonyOS不同,5.0版本已完全摆脱了对Android兼容层的依赖,使用了自主研发的单一框架架构,基于OpenHarmony L0-L2代码分支开发。

1.2 Android 13架构

Android 13的图形显示系统沿用了Android传统架构,自底向上包括:

  • 应用层:Android应用和系统UI
  • 框架层:UI框架(View系统)、Canvas、SurfaceView等
  • 系统服务层:SurfaceFlinger、WindowManager
  • HAL层:Hardware Composer、Gralloc等
  • 内核层:Linux内核和驱动(DRM/KMS)

Android 13使用单一的Linux内核,注重图形性能优化和兼容性。

2. 核心组件比较

2.1 窗口管理系统

OpenHarmony OS 5.0
  • 窗口管理服务:自研窗口管理服务,负责管理窗口的创建、销毁和状态变化
  • 多窗口支持:原生支持多窗口和分屏功能
  • 分布式能力:支持跨设备窗口管理和显示
Android 13
  • WindowManager:管理所有应用窗口的Z轴顺序和可见性
  • WindowManagerService:系统服务,实现窗口策略和管理
  • Activity管理器:协调窗口与应用生命周期

2.2 图形合成系统

OpenHarmony OS 5.0
  • 图形合成服务:负责多图层的合成和显示
  • ArkGraphics:自研2D/3D图形引擎,支持硬件加速
  • Graphics Buffer:管理图形缓冲区,支持高效内存管理
Android 13
  • SurfaceFlinger:核心合成器,负责将所有可见Surface合成为最终显示图像
  • Hardware Composer HAL:硬件抽象层,利用GPU和专用硬件进行合成
  • BufferQueue:连接生产者和消费者的缓冲队列机制

2.3 渲染系统

OpenHarmony OS 5.0
  • ArkUI渲染引擎:声明式UI渲染,类似于Flutter的设计理念
  • Custom Node:支持自定义渲染节点,提供更灵活的UI定制能力
  • Native渲染节点:提供底层渲染能力接口
Android 13
  • Skia:2D图形库,支持Canvas绘图
  • OpenGL ES/Vulkan:3D图形API
  • RenderThread:专用渲染线程,减少UI线程负担
  • HWUI:硬件加速的UI渲染系统

3. 开发模式比较

3.1 UI开发框架

OpenHarmony OS 5.0
  • ArkTS语言:基于TypeScript的扩展语言,专为声明式UI设计
  • 声明式UI范式:类似于React和Flutter的UI构建模式
  • 组件化设计:提供丰富的预设组件和自定义组件能力
Android 13
  • Java/Kotlin语言:传统Android开发语言
  • 命令式UI构建:通过XML布局或代码动态创建UI
  • Jetpack Compose:新的声明式UI工具包,类似于React风格

3.2 图形API

OpenHarmony OS 5.0
  • 自定义绘制API:提供类似Canvas的2D绘制能力
  • WebGL兼容:支持Web标准的3D渲染
  • ArkGraphics 3D:自研的3D图形引擎和API
Android 13
  • Canvas API:传统2D绘制接口
  • OpenGL ES:标准3D图形API
  • Vulkan:低开销高性能图形API
  • AGSL(Android Graphics Shading Language):自定义着色器语言

4. 渲染流程对比

4.1 OpenHarmony OS 5.0渲染流程

  1. 应用层:ArkUI应用创建UI树,通过声明式方式定义界面
  2. 框架层:ArkUI框架处理UI树,生成渲染指令
  3. 渲染引擎:处理渲染指令,转换为绘制操作
  4. 图形合成:图形合成服务将多图层合成为最终图像
  5. 显示:通过硬件接口输出到显示设备

特点:全链路声明式设计、面向多设备适配

4.2 Android 13渲染流程

  1. 应用层:应用通过View系统或Compose创建UI
  2. 绘制:UI线程计算布局并发出绘制命令
  3. RenderThread:专用线程处理绘制命令,生成图形缓冲区
  4. BufferQueue:缓冲区通过BufferQueue传递给SurfaceFlinger
  5. 合成:SurfaceFlinger合成所有可见Surface
  6. Hardware Composer:通过HAL利用GPU或专用硬件进行最终合成
  7. 显示:合成后的帧被发送到显示设备

特点:多线程设计、硬件抽象、缓冲队列机制

5. 跨设备显示能力

5.1 OpenHarmony OS 5.0

  • 分布式软总线:提供跨设备通信基础
  • 分布式屏幕:支持将屏幕内容无缝投射到其他设备
  • 流式传输:高效的跨设备图像流传输
  • 一次开发,多端部署:单一代码库适配多种设备

5.2 Android 13

  • Cast功能:通过Chromecast等技术实现屏幕投射
  • 多屏API:支持扩展显示和辅助显示
  • 需要特定实现:跨设备功能需要特定协议和实现

6. 性能优化方面

6.1 OpenHarmony OS 5.0

  • 微内核架构:提供更高的安全性和更低的延迟
  • 轻量级设计:适用于资源受限设备
  • 分区渲染:仅重绘变化部分
  • 多级缓存策略:优化重复绘制场景

6.2 Android 13

  • RenderThread:减轻主线程负担
  • GPU渲染分析:提供详细的性能分析工具
  • 渲染优化:提供多种优化API和机制
  • Vulkan支持:低开销图形API支持

7. 安全性和隔离性

7.1 OpenHarmony OS 5.0

  • 微内核隔离:提供更严格的组件隔离
  • 能力模型:基于能力的安全访问控制
  • 细粒度权限:更精细的权限控制机制

7.2 Android 13

  • 沙箱机制:应用间隔离
  • 进程分离:UI和渲染进程分离
  • 权限系统:运行时权限和静态权限控制

8. 总结

OpenHarmony OS 5.0和Android 13的显示框架体现了不同的设计理念:

  1. 架构设计:OpenHarmony采用微内核和多内核支持的分层架构,注重分布式能力;Android采用单一Linux内核架构,专注于图形性能和生态。

  2. 开发范式:OpenHarmony推广声明式UI和ArkTS语言;Android同时支持传统命令式UI和新的Jetpack Compose声明式UI。

  3. 跨设备能力:OpenHarmony原生设计支持跨设备场景;Android需要通过特定协议和实现支持跨设备场景。

  4. 技术路线:OpenHarmony走自主研发路线,摆脱对Android的依赖;Android保持渐进式演进,注重兼容性和稳定性。

两者各有优势,OpenHarmony在分布式能力和多设备适配方面具有架构优势,而Android在生态成熟度和工具链完善度方面更具优势。

相关文章:

OpenHarmony OS 5.0与Android 13显示框架对比

1. 架构概述 1.1 OpenHarmony OS 5.0架构 OpenHarmony OS 5.0采用分层架构设计,图形显示系统从底层到顶层包括: 应用层:ArkUI应用和第三方应用框架层:ArkUI框架、窗口管理API系统服务层:图形合成服务、窗口管理服务…...

[Java] 泛型

目录 1、初识泛型 1.1、泛型类的使用 1.2、泛型如何编译的 2、泛型的上界 3、通配符 4、通配符上界 5、通配符下界 1、初识泛型 泛型:就是将类型进行了传递。从代码上讲,就是对类型实现了参数化。 泛型的主要目的:就是指定当前的容器…...

Vue3 项目中零成本接入 AI 能力(以图搜图、知识问答、文本匹配)...

以下是在 Vue3 项目中零成本接入 AI 能力(以图搜图、知识问答、文本匹配)的完整解决方案,结合免费 API 和开源工具实现,无需服务器或付费服务: 一、以图搜图(基于 Hugging Face CLIP 模型) 核心思路 通过 Hugging Face Inference API 调用 CLIP 模型,将图片转换为向…...

Spark–steaming

实验项目: 找出所有有效数据,要求电话号码为11位,但只要列中没有空值就算有效数据。 按地址分类,输出条数最多的前20个地址及其数据。 代码讲解: 导包和声明对象,设置Spark配置对象和SparkContext对象。 使用Spark S…...

【目标检测】对YOLO系列发展的简单理解

目录 1.YOLOv12.YOLOv23.YOLOv34.YOLOv45.YOLOv66.YOLOv77.YOLOv9 YOLO系列文章汇总: 【论文#目标检测】You Only Look Once: Unified, Real-Time Object Detection 【论文#目标检测】YOLO9000: Better, Faster, Stronger 【论文#目标检测】YOLOv3: An Incremental …...

前端框架的“快闪“时代:我们该如何应对技术迭代的洪流?

引言:前端开发者的"框架疲劳" “上周刚学完Vue 3的组合式API,这周SolidJS又火了?”——这恐怕是许多前端开发者2023年的真实心声。前端框架的迭代速度已经达到了令人目眩的程度,GitHub每日都有新框架诞生,n…...

深度学习训练中的显存溢出问题分析与优化:以UNet图像去噪为例

最近在训练一个基于 Tiny-UNet 的图像去噪模型时,我遇到了经典但棘手的错误: RuntimeError: CUDA out of memory。本文记录了我如何从复现、分析,到逐步优化并成功解决该问题的全过程,希望对深度学习开发者有所借鉴。 训练数据&am…...

Python爬虫实战:获取优志愿专业数据

一、引言 在信息爆炸的当下,数据成为推动各领域发展的关键因素。优志愿网站汇聚了丰富的专业数据,对于教育研究、职业规划等领域具有重要价值。然而,为保护自身数据和资源,许多网站设置了各类反爬机制。因此,如何高效、稳定地从优志愿网站获取计算机专业数据成为一个具有…...

2025.4.22学习日记 JavaScript的常用事件

在 JavaScript 里,事件是在文档或者浏览器窗口中发生的特定交互瞬间,例如点击按钮、页面加载完成等等。下面是一些常用的事件以及案例: 1. click 事件 当用户点击元素时触发 const button document.createElement(button); button.textCo…...

如何修复WordPress中“您所关注的链接已过期”的错误

几乎每个管理WordPress网站的人都可能遇到过“您关注的链接已过期”的错误,尤其是在上传插件或者主题的时候。本文将详细解释该错误出现的原因以及如何修复,帮助您更好地管理WordPress网站。 为什么会出现“您关注的链接已过期”的错误 为了防止资源被滥…...

从零开始搭建Django博客①--正式开始前的准备工作

本文主要在Ubuntu环境上搭建,为便于研究理解,采用SSH连接在虚拟机里的ubuntu-24.04.2-desktop系统搭建的可视化桌面,涉及一些文件操作部分便于通过桌面化进行理解,最后的目标是在本地搭建好系统后,迁移至云服务器并通过…...

健身房管理系统(springboot+ssm+vue+mysql)含运行文档

健身房管理系统(springbootssmvuemysql)含运行文档 健身房管理系统是一个全面的解决方案,旨在帮助健身房高效管理其运营。系统提供多种功能模块,包括会员管理、员工管理、会员卡管理、教练信息管理、解聘管理、健身项目管理、指导项目管理、健身器材管理…...

Java从入门到“放弃”(精通)之旅——继承与多态⑧

Java从入门到“放弃”(精通)之旅🚀——继承与多态⑧ 一、继承:代码复用的利器 1.1 为什么需要继承? 想象一下我们要描述狗和猫这两种动物。如果不使用继承,代码可能会是这样: // Dog.java pu…...

DeepSeek开源引爆AI Agent革命:应用生态迎来“安卓时刻”

开源低成本:AI应用开发进入“全民时代” 2025年初,中国AI领域迎来里程碑事件——DeepSeek开源模型的横空出世,迅速在全球开发者社区掀起热潮。其R1和V3模型以超低API成本(仅为GPT-4o的2%-10%)和本地化部署能力&#x…...

使用 LangChain + Higress + Elasticsearch 构建 RAG 应用

RAG(Retrieval Augmented Generation,检索增强生成) 是一种结合了信息检索与生成式大语言模型(LLM)的技术。它的核心思想是:在生成模型输出内容之前,先从外部知识库或数据源中检索相关信息&…...

深入解析C++ STL List:双向链表的特性与高级操作

一、引言 在C STL容器家族中,list作为双向链表容器,具有独特的性能特征。本文将通过完整代码示例,深入剖析链表的核心操作,揭示其底层实现机制,并对比其他容器的适用场景。文章包含4000余字详细解析,适合需…...

Uniapp:pages.json页面路由

目录 一、pages二、style 一、pages uni-app 通过 pages 节点配置应用由哪些页面组成,pages 节点接收一个数组,数组每个项都是一个对象,其属性值如下: 属性类型默认值描述pathString配置页面路径styleObject配置页面窗口表现nee…...

Self-Ask:LLM Agent架构的思考模式 | 智能体推理框架与工具调用实践

作为程序员,我们习惯将复杂问题分解为可管理的子任务,这正是递归和分治算法的核心思想。那么,如何让AI模型也具备这种结构化思考能力?本文深入剖析Self-Ask推理模式的工作原理、实现方法与最佳实践,帮助你构建具有清晰…...

【前端】【业务场景】【面试】在网页开发中,如何优化图片以提高页面加载速度?解决不同设备屏幕适配问题

📌 问题 1:在网页开发中,如何优化图片以提高页面加载速度? 🔍 一、关键词总结 关键词说明图片压缩借助 TinyPNG、ImageOptim 等工具,无损减小图片文件大小格式选择JPEG(照片类)、P…...

Git Flow分支模型

经典分支模型(Git Flow) 由 Vincent Driessen 提出的 Git Flow 模型,是管理 main(或 master)和 dev 分支的经典方案: main 用于生产发布,保持稳定; dev 用于日常开发,合并功能分支(feature/*); 功能开发在 feature 分支进行,完成后合并回 dev; 预发布分支(rele…...

安装 vmtools

第2章 安装 vmtools 1.安装 vmtools 的准备工作 1)现在查看是否安装了 gcc ​ 查看是否安装gcc 打开终端 输入 gcc - v 安装 gcc 链接:https://blog.csdn.net/qq_45316173/article/details/122018354?ops_request_misc&request_id&biz_id10…...

【论文阅读20】-CNN-Attention-BiGRU-滑坡预测(2025-03)

这篇论文主要探讨了基于深度学习的滑坡位移预测模型,结合了MT-InSAR(多时相合成孔径雷达干涉测量)观测数据,提出了一种具有可解释性的滑坡位移预测方法。 [1] Zhou C, Ye M, Xia Z, et al. An interpretable attention-based deep…...

滑动窗口学习

2090. 半径为 k 的子数组平均值 题目 问题分析 给定一个数组 nums 和一个整数 k,需要构建一个新的数组 avgs,其中 avgs[i] 表示以 nums[i] 为中心且半径为 k 的子数组的平均值。如果在 i 前或后不足 k 个元素,则 avgs[i] 的值为 -1。 思路…...

用户需求报告、系统需求规格说明书、软件需求规格说明的对比分析

用户需求报告、系统需求规格说明书(SyRS)和软件需求规格说明书(SRS)是需求工程中的关键文档,分别对应不同层次和视角的需求描述。以下是它们的核心区别对比: ​​1. 用户需求报告(User Requirem…...

# 基于PyTorch的食品图像分类系统:从训练到部署全流程指南

基于PyTorch的食品图像分类系统:从训练到部署全流程指南 本文将详细介绍如何使用PyTorch框架构建一个完整的食品图像分类系统,涵盖数据预处理、模型构建、训练优化以及模型保存与加载的全过程。 1. 系统概述 本系统实现了一个基于卷积神经网络(CNN)的…...

v-html 显示富文本内容

返回数据格式&#xff1a; 只有图片名称 显示不出完整路径 解决方法&#xff1a;在接收数据后手动给img格式的拼接vite.config中的服务器地址 页面&#xff1a; <el-button click"">获取信息<el-button><!-- 弹出层 --> <el-dialog v-model&…...

【数学建模】孤立森林算法:异常检测的高效利器

孤立森林算法&#xff1a;异常检测的高效利器 文章目录 孤立森林算法&#xff1a;异常检测的高效利器1 引言2 孤立森林算法原理2.1 核心思想2.2 算法流程步骤一&#xff1a;构建孤立树(iTree)步骤二&#xff1a;构建孤立森林(iForest)步骤三&#xff1a;计算异常分数 3 代码实现…...

<项目代码>YOLO小船识别<目标检测>

项目代码下载链接 YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0…...

Crawl4AI:打破数据孤岛,开启大语言模型的实时智能新时代

当大语言模型遇见数据饥渴症 在人工智能的竞技场上&#xff0c;大语言模型&#xff08;LLMs&#xff09;正以惊人的速度进化&#xff0c;但其认知能力的跃升始终面临一个根本性挑战——如何持续获取新鲜、结构化、高相关性的数据。传统数据供给方式如同输血式营养支持&#xff…...

AI 技术发展:从起源到未来的深度剖析

一、AI 的起源与早期发展​ 人工智能&#xff08;AI&#xff09;作为计算机科学的重要分支&#xff0c;其诞生可以追溯到 20 世纪中叶。1943 年&#xff0c;艾伦・图灵提出图灵机的概念&#xff0c;为计算机科学和 AI 理论奠定了基础。1950 年&#xff0c;图灵又提出著名的图灵…...