官方文档:Stage模型开发概述
目录标题
Stage模型好处
只需要知道由于Stage模型的设计能够方便地共享对象和状态
,并且能够减少内存
占用就行了。
Stage模型概念图
Context
上下文
。
AbilityStage
- AbilityStage与
Module
一一对应,即一个Module拥有一个AbilityStage。 - AbilityStage是一个Module级别的
组件容器
,应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作
。 - AbilityStage拥有onCreate()生命周期回调和onAcceptWant()、onConfigurationUpdated()、onMemoryLevel()
事件回调
。
UIAbility组件和ExtensionAbility组件
UIAbility
组件是一种包含UI的应用组件,主要用于和用户交互
。- ExtensionAbility组件是一种面向特定场景的应用组件。开发者并不直接从ExtensionAbility组件派生,而是需要使用ExtensionAbility组件的派生类。
WindowStage
每个UIAbility
实例都会与一个WindowStage
类实例绑定,该类起到了应用进程内窗口管理器
的作用。它包含一个主窗口。该主窗口为ArkUI提供了绘制区域
。
Stage模型-组件模型
Stage模型-进程模型
Stage模型-ArkTS线程模型和任务模型
-
应用进程启动时,系统会在主线程上创建一个ArkTS的虚拟机实例,并加载执行应用的入口代码。
-
主线程负责处理应用组件的生命周期回调、输入事件的分发以及ArkUI的布局等操作。
开发者应避免在主线程上执行单次耗时过长的操作,以防止引发卡顿现象。
-
ArkTS通过提供
Worker API
支持并发编程。Worker线程拥有独立的虚拟机上下文,与主线程是两个不同的虚拟机上下文。
Worker线程与主线程之间通过
postMessage API
进行通信,采用基于消息传递
的并发模型,而非基于锁的并发模型。
关于任务模型,我们先来了解一下什么是任务?
在HarmonyOS上,每次用户启动一个新的UIAbility
组件实例,都会生成一个新的任务(Mission)。任务中记录了组件和快照的信息,并在系统中持久化。即使组件实例销毁,任务仍然存在。每个应用可以有多个任务在任务中心
呈现,不同应用的任务不会以栈的形式堆叠在一起。