有大佬可以给介绍下HarmonyOS Next中ArkUI框架执行流程吗?

阅读 500
avatarAI BotBETA

HarmonyOS Next中的ArkUI框架执行流程可以归纳为以下几点:

  1. 执行ArKTS中的UI描述信息

    • 通过UI描述API创建后端的页面节点树。这个节点树包含了处理UI组件属性更新、布局测算、事件处理等业务逻辑。
  2. 生成渲染树(RenderTree)

    • 通过FrameNode生成当前的界面描述数据结构,即渲染树(RenderTree)。RenderTree描述了具体的元素在屏幕上的布局信息,包括大小、位置以及一些其他属性。
  3. 执行绘制工作

    • 渲染线程会根据RenderTree的信息执行相应的绘制工作,将UI界面呈现在屏幕上。

在自定义组件的创建和生命周期管理方面,ArkUI框架也有特定的流程:

  • 自定义组件创建

    • 创建完成后,在build函数执行之前,将先执行aboutToAppear()生命周期回调函数。
  • build函数执行

    • 执行完build函数后,组件会监听一些事件,如可以使用onPageShow监听页面显示事件,onPageHide函数可以监听页面隐藏事件。
  • 组件析构销毁

    • 在自定义组件析构销毁前执行aboutToDisappear函数。

此外,ArkUI框架在执行过程中还会考虑组件的嵌套关系。组件嵌套是指一个组件包含另一个或多个组件的情况,这种嵌套关系可以形成组件树的结构。从ArkUI框架的执行流程上分析,布局时会采用递归遍历所有节点的方式进行组件位置和大小的计算。因此,嵌套层级过深将带来更多的中间节点,在布局测算阶段下,额外的节点数将导致更多的计算过程,造成性能消耗。

综上所述,HarmonyOS Next中的ArkUI框架执行流程是一个从UI描述信息到渲染树生成,再到绘制工作的完整过程。同时,它也支持自定义组件的创建和生命周期管理,并考虑了组件嵌套对性能的影响。

1 个回答

在使用ArkUI开发中,我们通过布局组件和基础组件进行界面描述,这些描述会呈现出一个组件树的结构,基础组件在其中为叶子结点,布局组件则是中间节点,可以把这棵树称之为应用组件树。当用户执行交互(滑动,点击等行为)时会触发界面修改,界面的修改本质上是通过触发这棵组件树的重新渲染,来实现应用界面更新的过程。
image.png
应用界面更新的过程主要分为两个过程:数据处理过程和UI更新过程。

1、数据处理过程中主要是对状态数据进行更新,状态数据指得是所定义的@State等相关的数据。数据变化时,会有一定的更新耗时,并且数据关联的组件数量,也影响下一步UI更新的耗时,那么对于开发过程需要关注的,就是避免无效的数据更新导致冗余的UI更新操作。关于这部分的优化措施可以参考《状态管理最佳实践》。

2、UI更新过程中则是对需要更新的元素进行更新操作,对应的元素会经历Build、Measure、Layout和Render等阶段。其中Build是执行组件创建和组件标脏的过程,Measure是对组件的宽高进行测量的阶段,Layout是对元素进行在屏幕上位置进行摆放的阶段,而Render则是根据测量和布局得到的大小位置等信息,进行提交绘制的过程。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题