ArkUI,更高效的框架设计

方舟开发框架(ArkUI)概述 ArkTSArkTS是UI开发语言,基于TypeScript(简称TS)语言扩展而来,是TS的超集。扩展能力包含各种装饰器、自定义组件、UI描述机制。状态数据管理作为基于ArkTS的声明式开发范式的特色,通过功能不同的装饰器给开发者提供了清晰的页面更新渲染流程和管道。状态管理包括UI组件状态和应用程序状态,两者协作可以使开发者完整地构建整个应用的数据更新和UI渲染。ArkTS语言的基础知识请参考学习ArkTS语言。布局布局是UI的必要元素,它定义了组件在界面中的位置。 阅读详情
原文: ArkUI,更高效的框架设计,点击链接查看更多技术内容。
上期文章我们讲到了ArkUI的三大特性,同时提到了ArkUI是一套用于构建HarmonyOS应用界面的UI开发框架,本期我们将从架构设计上来聊聊ArkUI的设计理念。

ArkUI架构图

从架构图可以看出,ArkUI的设计理念是在端到端整条技术路径设计上建立了一整套完整的分层机制。接下来我们依次分层为大家介绍。

ArkUI框架的“前驱”——【前端层】

前端层

架构的第一层【前端层】又称【声明式UI前端】,这一层包含了上期文章介绍的极简的UI信息语法规范,UI组件以及ArkTS语言特有的状态管理机制。

 独立的封装

此外,ArkUI对常用的UI组件的结构、样式、事件三大属性进行了独立的封装,内置于SDK中。开发人员可以根据项目设计需求,调用与设计匹配的组件函数,传入相应的参数来完成UI描述。

声明式UI信息语法

同时使用声明式UI信息语法,可以让数据和View进行联动更新,华为自研语言ArkTS为这种联动刷新提供了多维度的状态管理机制,开发人员通过对数据进行注释标记,合理控制数据对应View的更新作用范围。

 三种更新方式

如: 只单独更新、父子单向更新,父子双向同步更新等。

到这里,第一层【前端层】就介绍完毕了。

ArkUI框架的“核心部分”——【核心层】

接下来我们来到了框架的第二层【核心层】。

核心层

这一层主要包含两部分【方舟编译运行时】和【声明式UI后端引擎】。

方舟编译运行时

【核心层】的第一部分是【方舟编译运行时】,它涉及到开发环境和终端环境

运行流程图

【方舟编译运行时】的流程包含4步

跨语言调用

第1步是跨语言调用

ArkUI在开发项目时支持多语言开发,为不同的开发语言相互通信提供了通道,例如:提供了JS/TS与C/ C++交互的NAPI机制。

新语言ArkTS

而在ArkUI支持的多种语言中,ArkTS是以TS为语法基础的应用编程语言。

类型系统

在预编译的过程中,数据的静态类型信息会携带在生成的统一字节码中,后端编译的时候能直接利用这种类型信息加速机器码的执行,避免了运行时收集对象造成的额外开销,同时这些类型信息被用于AOT编译过程,使得应用启动时就可以执行AOT生成的优化机器码获得高性能运行体验。

统一字节码

第2步是统一字节码

完成项目开发将项目进行打包时,方舟编译器将编写的高级编程语言通过内置的工具链,编译为一种与运行设备和系统无关的可移植介质,这种介质就叫统一字节码(又称方舟码,abc文件),这个过程也称为字节码预编译。

统一字节码

第3步是机器码和安装包

字节码在设备上可以通过解释执行或者编译后执行的方式运行,对于执行性能要求高的部分字节码调用AOT生成机器码。

最后,应用经历了开发、字节码预编译、AOT静态优化编译、打包签名就形成了一个完整安装包,这样一来就终于可以在设备上运行预览了。

GC机制

第4步是GC(Garbage Collection)机制

搭载HarmonyOS系统的设备

对比其他设备,搭载HarmonyOS系统的设备上运行应用时会显得特别流畅,这里的秘密是什么呢?

GC机制技术问题

由于在传统的操作系统中,基于Tracing的GC存在着STW(Stop The World)阶段暂停时间较长的问题。

STW

当手机内存资源不够用的时候,传统操作系统虚拟机就会召唤GC(Garbage Collection)封锁公路,暂停手机运行的所有线程,等待它回收内存空间。

 STW暂停时间较长

而且STW(Stop The World)阶段的暂停时间段较长,开发者无法精确控制和干预,在性能较差的手机上会表现出较强的“间歇性”卡顿。这就好比行驶在市区道路的车辆,在经过每个路口都遇到了较长时间的红灯等待,一路走走停停,行驶体验感较差。

HPP GC

而方舟编译运行时在内存回收方面重新设计,基于Tracing GC推出了高性能内存回收技术——HPP GC(High Performance Partial Garbage Collection)。HPP GC综合了多种Tracing GC算法,根据不同对象区域,采用不同的回收方式。这种GC机制可以缩短STW阶段的时长,用在市区驾驶车辆来比喻,就是缩短了车辆在路口红灯等待的时间,增加了行驶的体验感。

HPP GC

接下来我们来看核心层的第二部分——声明式UI后端引擎。

它在HarmonyOS系统终端运行时,由C++编写UI的基本组件、布局、动效和事件组成。供UI前端开发人员调用。

渲染管线

渲染管线是位于运行时内部的一个独立的渲染线程,它负责支配CPU多线程地去工作,让CPU为GPU提供更多的渲染数据,最大额度的调取GPU的能力。

到此,【核心层】已全部介绍完毕。

通过本期ArkUI架构的学习,相信大家已经了解方舟编译运行时的技术和流程,也对ArkUI的设计理念有了基础的认识。完整版的内容可查看上方的视频,我们下期再见~

HarmonyOS开发(ArkUI简单使用) Componentbuild(){//组件UI描述@Componentbuild(){//使用组件Com({title:'标题'})//UI描述@Componentbuild(){@Component//UI描述build(){ 阅读详情

相关推荐

鸿蒙应用开发之UI框架方舟ArkUI使用参考

HarmonyOS提供了⼀套UI开发框架,即⽅⾈开发框架(ArkUI框架)。⽅⾈开发框架可为开发者提供应⽤UI开发所必需的能⼒,⽐如多种组件、布局计算、动画能⼒、UI交互、绘制等。

sinat_30844883的博客 2331

【HarmonyOS4.0】第四篇-ArkUI基础实战

ArkUI开发框架是方舟开发框架的简称,它是一套构建 HarmonyOS / OpenHarmony 应用界面的声明式UI开发框架,它使用极简的UI信息语法、丰富的UI组件以及实时界面语言工具,帮助开发者提升应用界面开发效率 30%,开发者只需要使用一套 TS / JS API,就能在多个 HarmonyOS / OpenHarmony 设备上提供既丰富又流畅的用户界面体验。

weixin_42533732的博客 3384

Harmony NEXT 开发-ArkUI框架速成一ArkUI概述和特点

自定义能力是UI开发框架提供给开发者对UI界面进行开发和定制化的能力。包括:自定义组合、自定义扩展、自定义节点和自定义渲染。可以关注我,后续这些都会一一更新,新的一年加油!

程序员Feri 1458

鸿蒙全新声明式UI框架ArkUI初体验,开发应用不错,比起flutter如何

ArkUI框架介绍: 华为开发者大会2021将于10月22日在东莞松山湖正式开幕,推出了全新的ArkUI应用开发框架。 ArkUI一套极简声明式UI范式开发框架,是HarmonyOS提供的一套基于JS/TS语言的开发能力集合,旨在帮助应用开发者高效开发跨端应用UI界面,自动适配多种不同的屏幕形态,开发者无需关心框架如何实现UI绘制和渲染,只需聚焦应用开发,从而实现极简高效地开发。 感觉这会是后续应用开发的主流,因为开发够简单和高效啊。且是流行的组件式开发,能够最大限度复用,效率提高不少,若是性能也

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 8655

鸿蒙跨平台框架来了ArkUI-X

众所周知,鸿蒙应用可以跨设备的运行,例如用鸿蒙开发的应用可以运行在手机,平台,穿戴等等IOT设 备,但是如果我想让开发的鸿蒙应用运行在Android手机上是否可行?

weixin_45821276的博客 4342

深入理解鸿蒙ArkUI框架原理

通过这篇深度文章,你已经学到了:✅ ArkUI框架的整体架构✅ 组件系统的核心机制✅ 状态管理的工作原理✅ 布局系统的设计思想✅ 渲染管线的优化策略这些知识足以让你写出高效、优雅的ArkUI代码。关键是要不断实践,在实际项目中应用这些原理。在我的鸿蒙开发系列文章中,我还详细讲解了性能优化、网络请求、数据库使用等高级主题。如果你想深入学习,可以关注我的后续文章。现在就开始实践吧!选择一个复杂的UI,尝试用这些原理来优化它。你会发现,理解框架的原理能够让你写出更好的代码。作者简介。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 1103

【ArkUI实战】| 构建高效应用的框架

本文介绍了华为鸿蒙ArkUI框架的核心优势与关键技术。作为一套声明式UI开发框架,ArkUI通过"一次开发,多端运行"理念解决了多端适配难题,采用状态驱动编程和自适应布局实现高效开发。文章对比了声明式与命令式UI的区别,展示了ArkUI简洁的代码实现;详细讲解了通过断点系统和原子化布局实现跨设备适配的方案;深入剖析了ArkUI在渲染引擎、UI更新机制、逻辑分离等方面的性能优化;最后介绍了ArkUI优秀的状态管理机制,通过多种状态装饰器实现数据与UI的自动绑定。这些特性使ArkUI成为鸿蒙

狮子也疯狂的博客 1266

ArkUI lite框架简介

arkui lite 框架

weixin_42019635的博客 1005

【HarmonyOS】ArKUI框架

•一个页面(Page)对应一个ets文件,一个页面内可以有若干个组件,基于ArkTS语言定义组件采用struct关键字,并通过生成器函数(build ())构建组件内的内容,组件内可以包含其它组件,其它组件可以系统的内置组件,也可以是自定义的组件。•一个页面必须有且只有一个入口组件,入口组件有@Entr y装饰器修饰。

wuyufei_sun的博客 1521

ArkUI框架之promptAction弹窗

本文介绍了ArkUI框架中的弹窗实现方式,重点讲解了promptAction和UIContext.getPromptAction两种弹窗类型。promptAction弹窗支持Toast提示和自定义弹窗,可通过openCustomDialog方法设置弹窗样式、位置、蒙层等属性,并支持组件复用。UIContext.getPromptAction弹窗则更适用于全局场景,不依赖UI组件,支持动态修改内容。文章提供了完整的代码示例,展示了如何创建、自定义和关闭弹窗,包括设置边框、阴影、圆角等样式效果,以及最佳实践建议

leon_teacher 1661

HarmonyOS ArkUI开发教程之 02 ArkUI 方舟开发框架核心能力与整体架构

基于TS扩展的声明式开发范式的方舟开发框架是为HarmonyOS平台开发极简、高性能、跨设备应用设计研发的UI开发框架,支持开发者高效的构建跨设备应用UI界面。 一、核心能力 使用基于TS扩展的声明式开发范式的方舟开发框架,采用更接近自然语义的编程方式,让开发者可以直观地描述UI界面,不必关心框架如何实现UI绘制和渲染,实现极简高效开发。从组件、动效和状态管理三个维度来提供UI能力,还提供了系统能力接口,实现系统能力的极简调用。 1. 开箱即用的组件 框架提供丰富的系统预置组件,可以通过链式调用的方式设.

iCloudEnd的博客 2527

鸿蒙开发11-ARKUI框架

ARKUI 框架通过声明式语法、组件化体系和高效的状态管理,大幅提升了 HarmonyOS 应用的开发效率和性能。开发者可通过 DevEco Studio 快速搭建项目,结合 Flex/Grid 布局、路由导航和动画能力,构建跨设备的响应式应用。同时,合理使用性能优化技巧(如状态监听、懒加载、硬件加速)可进一步提升用户体验。建议从官方文档和 Codelabs 入手,逐步掌握 ARKUI 开发的核心技能。

qq_25218777的博客 1690

python基础语法与数据结构

本文摘要: Python基础语法包含输入输出、函数、变量、数据类型及运算符等内容。输入函数input()获取键盘输入并以字符串存储,输出函数print()可格式化输出数据。函数通过def定义,可带参数和返回值,提高代码复用性。变量无需声明类型,可动态赋值。数据类型包括数字、字符串、布尔及复合类型,可通过type()查看。运算符包含算术、赋值等类型,其中复合赋值运算符如+=可简化运算。类型转换函数如int()、str()等可实现显式类型转换。这些基础语法构成Python编程的核心要素。

MM602388的博客 431

ArkUI框架,更懂程序员的UI信息语法

当设备尺寸变宽时,我可以通过原子布局的均分能力去实现页面布局的一致性,也可以通过栅格布局,去解决多尺寸多设备的动态布局问题。声明式开发框架成功解决了传统开发过程中,代码冗长的问题。但是在了解声明式开发框架的过程中,我不经想到一个问题:有没有方法,让我开发一次代码,就可以在多个设备上适配呢?刚刚提到的原子布局能力包含均分能力,折行能力,拉伸能力,缩放能力,延伸能力,占比能力和隐藏能力。为了解决这个问题,我便在ArkUI上实现了同样的功能,神奇的事情发生了,瞬间代码干净了很多,只用几行代码就实现了相同的功能。

HarmonyOSDev的博客 1177

告别Qt Creator!VSCode + QMake + MinGW:从零搭建高效Qt开发环境

本文详细介绍了如何使用VSCode替代Qt Creator搭建高效的Qt开发环境,涵盖VSCode配置、QMake与MinGW集成、智能提示优化及构建调试技巧。通过实战案例展示如何提升开发效率30%以上,特别适合中大型Qt项目开发。

weixin_30466039的博客 242

plotly包安装_Plotly(一)安装指南

plotly,是一个快速完善并崛起的交互式的、开源的绘图库库,Python库则是它的一个重要分支。现已支持超过40种独特的图表类型,涵盖了广泛的统计、金融、地理、科学和三维用例。Plotly 通过JavaScript构建,能基于Web显示实现交互式的可视化效果(Plotly最强大之处之一)。所以它的图形呈现可以方便的显示于Jupyter notebook(基于html)、独立的html中(直接显示...

weixin_35907189的博客 3469

方舟开发框架(ArkUI)可运行 OpenHarmony、HarmonyOS、Android、iOS等操作系统

ArkTS是HarmonyOS优选的主力应用开发语言,围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展。扩展能力包含声明式UI描述、自定义组件、动态扩展UI元素、状态管理和渲染控制。状态管理作为基于ArkTS的声明式开发范式的特色,通过功能不同的装饰器给开发者提供了清晰的页面更新渲染流程和管道。状态管理包括UI组件状态和应用程序状态,两者协作可以使开发者完整地构建整个应用的数据更新和UI渲染。ArkTS语言的基础知识请参考学习ArkTS语言。布局。

zzlyx99的专栏 2510

流量特征工程实战:基于Python脚本的CIC-FlowMeter批量自动化处理

本文详细介绍了如何利用Python脚本对CIC-FlowMeter工具进行批量自动化封装,实现从海量PCAP文件中高效提取流量特征并生成CSV文件。通过构建健壮的自动化流水线,解决了手动处理效率低下、易出错的问题,并分享了并行处理、错误处理等关键优化技巧,助力网络流量分析与机器学习数据预处理工作。

c6d7e8f9g的博客 744

什么是ArkUI框架

ArkUI是华为推出的下一代用户界面开发框架,旨在为开发者提供一个高效、灵活、跨平台的UI开发解决方案。它基于声明式编程范式,允许开发者使用简单的语言描述UI的结构和行为,而无需关心具体的渲染细节。这样不仅提高了开发效率,还增强了代码的可读性和可维护性。

jikuaidi6yuan的博客 937

Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)

导语 "慢品人间烟火色 闲观人间岁月长" ———致自己​​​ ​ ???? 遇见我以后,我们的故事就开始了,愿你历经山河,仍觉得人间值得????。 ​ 星光月夜烟花皆归你,我也归你。关于烟花????大家都​知道多少?有多少表白故事情节都发生在烟 花下,想必木木子????不用说大家也知道叭~​​ 今天这则小短文就是关于烟花的故事!你准备好跟我一起进入烟花的世界了嘛? ​正文 “每一句文案,都有一个故事,你仔细听” ​ 1)环境安装???? 准备好:.

顾木子吖的博客 5万+

Office系列完全干净卸载工具合集(最全)

使用 Microsoft Fix it 卸载 Microsoft Office 套件 一、Windows 7、Windows Vista或Windows XP下卸载Office 1.MicrosoftEasyFix50416 工具用来卸载office 2003 MicrosoftEasyFix50416_Office2003.msi 2.MicrosoftEasyFix50154 工具用来卸载office 2007 MicrosoftEasyFix50154_Office2007.msi 3.Microso

业精于勤,荒于嬉 3万+

Harmony OS 开发-ArkUI框架速成一

自定义能力是UI开发框架提供给开发者对UI界面进行开发和定制化的能力。包括:自定义组合、自定义扩展、自定义节点和自定义渲染。可以关注我,后续这些都会一一更新,新的一年加油!

程序员Feri 1250

ubuntu:E: 无法定位软件包yum解决方法

如果出现以下问题,则需要更新yum源 yum源位于/etc/apt/sources.list yum源更新的网站有 清华大学开源镜像 中科大开源镜像 1.此处更新yum源的时候先备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo gedit /etc/apt/sources.list 将更新源替换成上面符合版本系列号 我用的版本号为20.04 # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

码农研究僧的博客 1万+

ArkUI(鸿蒙UI框架),一文搞懂它!

随着智能设备的普及,跨设备的用户界面(UI)设计与开发变得愈加复杂。不同类型的设备(如智能手机、智能手表、电视等)具有不同的屏幕尺寸、分辨率和交互方式,因此开发一个既能在所有设备上流畅运行又能提供一致用户体验的UI显得尤为重要。鸿蒙操作系统(HarmonyOS)的ArkUI框架正是为了解决这个问题而设计的,它不仅支持多设备适配,还具备高效的渲染能力。ArkUI框架提供了一套统一的UI开发接口,可以帮助开发者构建适配不同设备的跨平台应用,同时优化UI渲染性能,提升设备上的显示效果。

小白酷爱学编程,欢迎大家一块儿学习~~ 1057

基于YOLOv8的MVTec AD缺陷检测系统设计与实现

速度快,精度高;支持 anchor-free 架构;支持实例分割和图像分类;模块化代码,易于部署与改进;完美兼容 ONNX、TensorRT 等推理框架;官方支持多平台训练和推理(CPU/GPU)。YOLOv8 是工业视觉检测落地非常理想的选择。MVTec AD(Anomaly Detection)数据集包括15类工业对象,每个对象包括多个子类缺陷(例如 “scratch”, “crack”, “hole”)及正常图像。类别缺陷子类bottlecablecapsule。

YOLO 931

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

进入鸿蒙系统必学的开发框架ArkUI

鸿蒙开发的主要框架是ArkUI,以下是对ArkUI的具体介绍 :鸿蒙的ArkUI框架是可以支持多个终端的,主要通过以下方式实现:学习鸿蒙开发框架ArkUI的成本具有一定的相对性,以下是具体分析:

东南草堂 1996

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 搜电充电:创新“服务卡片”,让即时充电更便捷
下一篇: 不止于大,如何打造优秀的折叠屏应用体验
「已注销」
博客等级 码龄5年 1045粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值