0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙Stage模型--概述

王程 来源:jf_75796907 作者:jf_75796907 2024-01-29 13:59 次阅读

Stage模型:HarmonyOS 3.1 Develper Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。

设计思想

Stage模型之所以成为主推模型,源于其设计思想。Stage模型的设计基于如下出发点。

为复杂应用而设计

多个应用组件共享同一个ArkTS引擎(运行ArkTS语言的虚拟机)实例,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。
采用面向对象的开发方式,使得复杂应用代码可读性高、易维护性好、可扩展性强。

支持多设备和多窗口形态

应用组件管理和窗口管理在架构层面解耦:

便于系统对应用组件进行裁剪(无屏设备可裁剪窗口)。 便于系统扩展窗口形态。
在多设备(如桌面设备和移动设备)上,应用组件可使用同一套生命周期。

平衡应用能力和系统管控成本

Stage模型重新定义应用能力的边界,平衡应用能力和系统管控成本。

提供特定场景(如卡片、输入法)的应用组件,以便满足更多的使用场景。
规范化后台进程管理:为保障用户体验,Stage模型对后台应用进程进行了有序治理,应用程序不能随意驻留在后台,同时应用后台行为受到严格管理,防止恶意应用行为。

概述

wKgZomW3Pp2AeKfvAAGuMXoEDSA429.png

wKgaomW3PsaAfd_KAAGuMXoEDSA169.png

UIAbility组件和ExtensionAbility组件

Stage模型提供UIAbility和ExtensionAbility两种类型的组件,这两种组件都有具体的类承载,支持面向对象的开发方式。

UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。例如,图库类应用可以在UIAbility组件中展示图片瀑布流,在用户选择某个图片后,在新的页面中展示图片的详细内容。同时用户可以通过返回键返回到瀑布流页面。UIAbility的生命周期只包含创建/销毁/前台/后台等状态,与显示相关的状态通过WindowStage的事件暴露给开发者

ExtensionAbility组件是一种面向特定场景的应用组件。

WindowStage

每个UIAbility类实例都会与一个WindowStage类实例绑定,该类提供了应用进程内窗口管理器的作用。它包含一个主窗口。也就是说UIAbility通过WindowStage持有了一个窗口,该窗口为ArkUI提供了绘制区域。

Context

在Stage模型上,Context及其派生类向开发者提供在运行期可以调用的各种能力。UIAbility组件和各种ExtensionAbility派生类都有各自不同的Context类,他们都继承自基类Context,但是各自又根据所属组件,提供不同的能力。

AbilityStage

每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例,当HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例。每个在该HAP中定义的UIAbility类,在实例化后都会与该实例产生关联。开发者可以使用AbilityStage获取该HAP中UIAbility实例的运行时信息

应用与组件配置

在基于Stage模型开发的应用项目代码下,都存在一个 app.json5 及一个或多个 module.json5 这两种配置文件。

app.json5主要包含以下内容:

应用的全局配置信息,包含应用的包名、开发厂商、版本号等基本信息。

特定设备类型的配置信息。
module.json5主要包含以下内容:

Module的基本配置信息,例如Module名称、类型、描述、支持的设备类型等基本信息。

应用组件信息,包含UIAbility组件和ExtensionAbility组件的描述信息。

应用运行过程中所需的权限信息。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    2704

    浏览量

    47689
  • 鸿蒙
    +关注

    关注

    55

    文章

    1631

    浏览量

    42120
  • HarmonyOS
    +关注

    关注

    79

    文章

    1843

    浏览量

    29266
收藏 人收藏

    评论

    相关推荐

    Stage 模型深入解读

    HarmonyOS 3.1 版本(API 9)推出了全新应用开发模型 - Stage 模型,该模型重新定义了应用开发的能力边界,从应用开发模型
    的头像 发表于 02-18 09:28 427次阅读
    <b class='flag-5'>Stage</b> <b class='flag-5'>模型</b>深入解读

    鸿蒙Ability开发-Stage模型下Ability的创建和使用

    对Ability开发技术的简单运用,更多的鸿蒙开发技术可以前往我主页查询,下面分享鸿蒙开发4.0技术分布(略缩图): 高清完整版技术学习路线图如下寻找保存(附鸿蒙文档) 基于Stage
    发表于 01-08 15:34

    鸿蒙应用/元服务开发-窗口(Stage模型)设置应用主窗口

    一、 设置应用主窗口****说明 在Stage模型下,应用主窗口由UIAbility创建并维护生命周期。在UIAbility的onWindowStageCreate回调中,通过WindowStage
    发表于 02-05 14:45

    Stage模型深入解读

    HarmonyOS 3.1版本(API 9)推出了全新应用开发模型-Stage模型,该模型重新定义了应用开发的能力边界,从应用开发模型的角度
    发表于 03-15 10:32

    鸿蒙元服务万能卡片开发-stage模型和fa模型的卡片区别

    一、项目类型 Application: 应用开发 Atomic Service:原子化服务开发 这里选择Empty Ability模板创建项目。 二、Stage模型卡片开发 Api:9
    发表于 05-22 14:20

    HarmonyOS/OpenHarmony应用开发- Stage模型概述

    UIAbility组件和ExtensionAbility组件 Stage模型提供UIAbility和ExtensionAbility两种类型的组件,这两种组件都有具体的类承载,支持面向对象
    发表于 05-25 17:44

    OpenHarmony应用模型的构成要素与Stage优势

    应用开发更简单、高效。 二、Stage主推模型优势 Stage模型之所以成为主推模型,源于其设计思想。S
    发表于 09-26 16:48

    鸿蒙原生应用/元服务开发-Stage模型能力接口(一)

    从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。本模块接口仅可在Stage模型下使用。二、导入模块 .import Ability from
    发表于 12-08 16:34

    鸿蒙原生应用/元服务开发-Stage模型能力接口(四)

    API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。本模块接口仅可在Stage模型下使用。 二、导入模块 import AbilityStage from
    发表于 12-14 15:39

    鸿蒙原生应用/元服务开发-Stage模型能力接口(五)

    Stage模型下使用 二、 导入模块 import common from \'@ohos.app.ability.common\'; 三、系统能力 :以下各项对应的系统能力均为
    发表于 12-15 15:11

    鸿蒙原生应用/元服务开发-Stage模型能力接口(六)

    的起始版本。本模块接口仅可在Stage模型下使用。 二、 导入模块 import contextConstant from \'@ohos.app.ability.contextConstant\'; 三
    发表于 12-18 14:40

    鸿蒙原生应用/元服务开发-Stage模型能力接口(七)

    接口的起始版本。本模块接口仅可在Stage模型下使用。 二、导入模块 import EnvironmentCallback from
    发表于 12-19 11:03

    鸿蒙原生应用/元服务开发-Stage模型能力接口(八)

    独标记接口的起始版本。本模块接口仅可在Stage模型下使用。 二、导入模块 .import ExtensionAbility from
    发表于 12-20 16:12

    鸿蒙Stage模型和FA模型区别

    笔者这两个月一直在折腾分布式应用,并且分别基于 API8 的 FA 模型以及 API9 的 Stage 模型进行了开发,这两天总算是基本开发完了,闲下来总结下这两者的区别,顺便跟大家唠唠开发时踩过的坑。
    的头像 发表于 01-04 11:59 2006次阅读

    Stage模型深入解读

    作者:sunbingxin 应用框架架构师 HarmonyOS 3.1版本(API 9)推出了全新应用开发模型-Stage模型,该模型重新定义了应用开发的能力边界,从应用开发
    的头像 发表于 03-16 13:35 586次阅读