HarmonyOS 3.1版本(API 9)推出了全新运用开发模型-Stage模型,该模型从头界说了运用开发的才干鸿沟,从运用开发模型的视点,支撑多窗口形状下一致的运用组件生命周期,并支撑跨设备的搬迁和协同机制。本文为大家详细介绍Stage模型。

一、Stage模型概念

运用开发模型是运转在不同OS上的笼统结构。OS经过这种笼统结构,把运用开发的基础设施封装在OS内部。开发者经过运用运用开发模型,复用OS基础设施的才干,达到高效开发运用的意图。

1、什么是Stage模型

Stage模型供给面向对象的开发方法,规范化了进程创立的方法,供给组件化开发机制,将组件笼统为UIAbility和ExtensionAbility两大类。UIAbility组件的生命周期包括创立、毁掉、前台、后台状况,将与界面强相关的获焦、失焦状况都放在窗口办理对象中,然后完成UIAbility与窗口之间的弱耦合;在服务侧,窗口办理服务依赖于组件办理服务,前者通知后者前后台改变,这样组件办理服务仅感知前后台改变,不感知焦点改变。ExtensionAbility组件供给场景化的服务扩展机制,不供给自界说服务的才干。

相比于FA模型,Stage模型供给了更灵敏的开发方法,更低的内存占用和更规范化的体系办理机制。

未来HarmonyOS将在兼容FA模型的基础上,持续演进Stage模型。

Stage模型深入解读
FA模型与Stage模型比照图

2、Stage模型才干特色

Stage模型深入解读
Stage模型才干示意图

Stage模型的规划,是为了供给给开发者一个更好的开发方法,更好的适用于多设备、分布式场景。

Stage模型的三大才干特色:

1)原生支撑组件级的搬迁和协同

Stage模型的组件天然生成具备分布式搬迁和协同的才干,它是HarmonyOS支撑分布式才干在运用模型上的表现。

运用组件支撑跨设备的数据恢复:

充沛运用ArkUI的声明式UI和多页面的才干,把数据/状况保存在UIAbility组件实例中,逻辑修改数据,数据驱动UI改变。多设备间搬迁UIAbility,就是搬迁UIAbility的数据/状况。在方针设备上经过数据/状况来恢复UI,完成逻辑与UI的解耦,提升了流通开发功率

运用组件支撑跨设备的远程调用:

UIAbility组件支撑跨设备拉起另外一个设备上同名运用的同名组件实例。体系在拉起过程中,经过底层软总线的才干在两个组件实例之间树立跨设备的RPC连接,开发者在获取RPC接口后,即可进行跨设备通讯,适用于运用在设备间交互的场景。

2)支撑多设备形状和多窗口形状

在桌面设备上,窗口能够最大化/最小化/恣意改变窗口巨细,窗口间能够恣意切换焦点,接纳用户输入。在移动设备上,基本以全屏窗口为主,窗口之间构成栈结构,只有顶层窗口才干接纳用户输入。如安在不同窗口形状的设备上,供给一致的组件模型呢?Stage模型分离了UIAbility生命周期和窗口显现/焦点事情,使得窗口的焦点切换不影响UIAbility组件的状况。

UIAbility的前后台状况和窗口的全屏/最小化的关系如下:

只有当窗口最小化的时分,UIAbility组件进入后台状况,不然UIAbility组件处于前台状况;

当一个窗口全屏的时分,触发其他窗口最小化(能够依据产品形状确认全屏窗口个数)。

在桌面设备和移动设备的交互体会不同的情况下,体系经过实施上述规则,能够确保UIAbility组件的生命周期界说在多设备上坚持一致。一起,不论在桌面设备还是移动设备,都遵循每个新的UIAbility组件实例都会创立一个使命,所以也确保了使命(Mission)机制在多设备上的一致性。

3)从头界说运用才干鸿沟

通常情况下,运用假如可自行决议创立多少个进程、自界说服务时,体系为确保用户体会,需求在后台运转管控、进程相关发动等方面对运用的运转状况进行强办理,然后降低体系整体的内存占用和功耗开支。

Stage模型依据场景的服务扩展、严格的后台管控机制和受限的进程模型,从头界说了运用才干鸿沟,使进程环境从“无序”到“有序”,规范了进程办理模型。

二、Stage模型介绍

依据Stage模型开发运用,下面将会从运用组件、进程模型、线程模型、使命模型、后台运转机制、运用装备文件6个方面进行介绍。

1、组件模型

运用开发模型中需求指明运用开发的进口。在HarmonyOS上,运用组件是运用开发的进口,一起也是运转时进口。用户发动、运用和退出运用过程中,运用组件会在不同的状况间切换,这些状况称为运用组件的生命周期。运用组件供给生命周期的回调函数,开发者经过运用组件的生命周期回调感知运用的状况改变。

Stage模型深入解读
Stage模型组件类型

Stage模型供给了UIAbility和ExtensionAbility两种类型的组件。

1) UIAbility组件是一种包括UI界面的运用组件,主要用于和用户交互。UIAbility的生命周期只包括创立/毁掉/前台/后台等状况,经过WindowStage的事情暴露显现相关的状况。每个UIAbility组件都会有一个主窗口与之绑定,假如开发者期望开发杂乱的页面和动效,咱们引荐开发者运用ArkUI的多页面才干。UIAbility支撑跨设备拉起同名组件,并与之协同交互的才干。

2)ExtensionAbility组件是一种面向特定场景的运用组件,体系在特定场景下发动该组件为用户供给服务。开发者并不直接从ExtensionAbility派生,而是从ExtensionAbility的派生类派生。目前ExtensionAbility有用于卡片场景的FormExtensionAbility和用于输入法场景的InputMethodExtensionAbility等多种派生类。在Stage模型上,普通运用开发者不能开发自界说服务,也不支撑开发者直接发动ExtensionAbility,包括开发者自己编写的ExtensionAbility。

2、进程模型

Stage模型深入解读
进程模型示意图

Stage模型有三类进程,是从体系整体资源占用考虑,期望由体系担任运用进程的创立和毁掉。所以不支撑运用自界说装备多进程,也不支撑经过接口发动进程。

1)主进程

开发者编写的UIAbility进口及其依赖的代码都在该进程中运转。它是由UIAbility组件的发动触发创立的。

2)ExtensionAbility进程

开发者编写的同一种类型的ExtensionAbility组件实例都会在同一个进程中运转。不同类型的ExtensionAbility组件实例则在不同的进程中运转。该类进程是由体系服务在特定场景下创立,并依据用户对特定场景的运用,决议其何时毁掉。一起该类进程独立于主进程创立,而且不支撑与主进程之间进行IPC通讯。

3)Render进程

为了支撑WebView的运转,每个运用只能创立一个Render进程用于运转WebView的渲染引擎。这个Render进程也是由体系担任创立和毁掉。

3、线程模型

HarmonyOS的原生运用开发语言为ArkTS。在运用进程发动时,体系会在主线程上创立一个ArkTS的虚拟机实例,然后加载和履行运用的进口代码。运用组件的生命周期回调,输入事情的分发,ArkUI的布局等操作都会在主线程上履行,所以咱们引荐开发者不要在主线程上履行单次耗时过长的操作,不然容易引发卡顿。

ArkTS经过供给Worker API支撑并发编程。Worker有独立的虚拟机上下文,它与主线程是两个不同的虚拟机上下文。它们之间经过postMessage API进行通讯。这种依据消息传递的并发模型与依据锁的并发模型不同,需求开发者特别注意。

4、使命模型

用户在操作运用的过程中,常常需求对已经操作过的运用进行切换,这些操作记录(不同OS的操作对象界说或许不同)常常被称为使命。运用使命办理模型需求界说使命的操作对象,以及使命创立和毁掉的方法和机遇。

在HarmonyOS上,每次用户发动一个新的UIAbility组件实例,都会生成一个新的使命(Mission)。例如,用户发动一个视频运用后,切换到“使命中心”界面,将会看到视频运用这个使命,当用户点击这个使命时,体系会把该使命切换到前台,假如这个视频运用中的视频修改功能也是经过运用组件编写的,那么在用户发动视频修改功能时,会创立视频修改的运用组件实例,在“使命中心”界面中,将会展示视频运用、视频修改两个使命。

使命(Mission)中记录了组件和快照的信息,并在体系中耐久化。即使使命对应的组件实例毁掉,使命依然存在。假如用户从使命中心中选择某个使命,使命对应的组件实例会被拉到前台并获焦,假如它对应的组件实例已经毁掉,体系会创立一个新的组件实例与之对应。

开发者在用户交互规划上需求特别注意,防止发生过多的使命。假如开发者期望运用多个页面交互,引荐运用ArkUI的页面栈才干。

HarmonyOS的使命模型不供给使命栈的才干,每个运用能够有多个使命在使命中心呈现,不同运用的使命不会以栈的方式堆叠在一起,防止了不同运用间使命混淆不清的情况。

5、后台运转机制

Stage模型深入解读
后台运转示意图

当运用的所有前台UIAbility组件都进入后台的时分,体系认为该运用进入后台。运用在后台运转的机制对设备续航影响很大。HarmonyOS后台运转机制的规划初衷是期望运用进程在体系规则范围内运转,并运用户可感知,防止运用进程在后台运转,而用户不感知的情况。咱们供给了如下几种后台使命(Task):

1)短时使命

体系每天会给请求了短时使命的运用分配必定的后台运转配额。

2)长时使命

体系界说了若干种后台长时运转的使命类型,开发者需求在运用的装备文件中装备,并需求上架审核。这样该运用在设备上后台运转的时分,就能够坚持长期运转,一起体系会经过用户可感知的UI提示用户有后台进程正在运转。例如导航,录音,音乐等场景。

3)无使命

默认情况下,运用不请求任何后台运转方法,则会在运用进程进入后台10秒钟后被冻住挂起,运用无法收到外部非用户操作事情。

4)闲时使命

对于一些CPU密集型,且对实时性要求不高的使命,比方科学核算等场景,体系供给了闲时使命机制。例如设备充电等恰当的机遇向运用供给后台运转的才干,开发者能够经过Work-SchedulerExtensionAbility运用该机制,体系会依据当前的体系状况和用户运用频次决策唤醒机遇。

5)托管使命

对于一些能够托管给体系履行的使命。比方下载等场景,体系供给署理使命的API,由体系署理完成使命,运用进程会处于冻住状况。

6、运用装备文件

Stage模型供给了全新的运用装备文件,它包括运用信息、运用组件信息、权限信息、开发者自界说信息等,这些信息在编译构建、分发和运转阶段别离供给给编译东西、运用商场和操作体系运用。

Stage运用模型是HarmonyOS运用开发的基础架构,它从组件模型、面向对象开发方法、进程/线程模型等方面对FA模型进行了全面的优化,提高了运用开发功率。后续咱们将在运用模型的基础设施、大型运用开发、拓宽运用形状、跨设备才干和功能体会等方面持续打磨,支撑HarmonyOS运用生态拓宽,广大开发者参加进来,一起探究和创新,共建万物互联的运用生态。

未来将来,有迹可循!

Stage模型深入解读