鸿蒙的 Stage 模型

news/2025/3/18 20:21:03/

鸿蒙的 Stage 模型

在鸿蒙 Next 开发中,Stage 模型是应用开发的核心架构之一,它为开发者提供了一种高效、灵活的方式来构建分布式应用。本文将详细介绍鸿蒙 Stage 模型的基本概念、应用配置文件的使用、UIAbility 组件的介绍以及如何通过 Stage 模型开发复杂应用。


一、Stage 模型的基本概念

(一)什么是 Stage 模型?

Stage 模型是鸿蒙 HarmonyOS API 9 开始新增的应用模型,是目前主推且会长期演进的模型。在 Stage 模型中,应用组件(如 Ability)和窗口(Window)的管理通过 AbilityStageWindowStage 类来实现,因此得名 Stage 模型。

(二)Stage 模型与 FA 模型的区别

与 FA(Feature Ability)模型相比,Stage 模型的主要区别在于:

  • 资源共享:Stage 模型中,多个应用组件共享同一个 ArkTS 引擎实例,而 FA 模型中,每个应用组件独享一个 ArkTS 引擎实例。
  • 内存占用:由于资源共享,Stage 模型在运行复杂应用时可以减少内存占用。

(三)Stage 模型的优势

  • 组件间共享:应用组件之间可以方便地共享对象和状态。
  • 分布式场景支持:更适合开发分布式场景下的复杂应用。

二、Stage 模型的应用配置文件

(一)应用包名配置

应用需要在工程的 AppScope 目录下的 app.json5 文件中配置 bundleName 标签,用于标识应用的唯一性。推荐采用反域名形式命名(如 com.example.demo)。

(二)图标和标签配置

图标和标签通常一起配置,分别对应 app.json5module.json5 文件中的 iconlabel 标签。

(三)Module 支持的设备类型配置

Module 支持的设备类型需要在 module.json5 文件中配置 deviceTypes 标签。

(四)Module 权限配置

Module 访问系统或其他应用受保护部分所需的权限信息需要在 module.json5 文件中配置 requestPermissions 标签。


三、Stage 模型的 UIAbility 组件

(一)UIAbility 组件简介

UIAbility 是一种包含 UI 的应用组件,主要用于与用户交互。一个应用可以有一个或多个 UIAbility,例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的 UIAbility。

(二)UIAbility 的配置

为使应用能够正常使用 UIAbility,需要在 module.json5 文件的 abilities 标签中声明 UIAbility 的名称、入口、标签等相关信息。

{"module": {"abilities": [{"name": "EntryAbility","srcEntry": "./ets/entryability/EntryAbility.ets","description": "$string:EntryAbility_desc","icon": "$media:icon","label": "$string:EntryAbility_label","startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background"}]}
}

(三)指定 UIAbility 的启动页面

在 UIAbility 的 onWindowStageCreate 生命周期回调中,通过 WindowStage 对象的 loadContent 方法设置启动页面。

onWindowStageCreate(windowStage: window.WindowStage): void {windowStage.loadContent('pages/Index', (err) => {if (err.code) {hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');return;}hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');});
}

(四)获取 UIAbility 的上下文信息

UIAbility 类拥有自身的上下文信息,该信息为 UIAbilityContext 类的实例。通过 UIAbilityContext 可以获取 UIAbility 的相关配置信息。

export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {let context = this.context;hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');}
}

四、总结

Stage 模型是鸿蒙 HarmonyOS 推荐的应用开发模型,它通过资源共享和高效的组件管理,为开发者提供了一种灵活且高效的方式来构建分布式应用。通过合理配置应用配置文件和使用 UIAbility 组件,开发者可以轻松实现复杂应用的开发。

希望本文能帮助你更好地理解和使用鸿蒙 Stage 模型进行应用开发。如果有任何问题或需要进一步讨论,欢迎随时交流!


http://www.ppmy.cn/news/1580152.html

相关文章

鸿蒙路由 HMRouter 配置及使用 三 全局拦截器使用

1、前期准备 简单封装一个用户首选项的工具类 import { preferences } from "kit.ArkData";// 用户首选项方法封装 export class Preferences {private myPreferences: preferences.Preferences | null null;// 初始化init(context: Context, options: preference…

大型语言模型(LLM):解码人工智能的“语言基因“

文章目录 引言:与文字共舞的智能革命一、LLM本质解析:文字的"DNA测序"1. 语言模型的进化史2. LLM的"生物结构" 二、LLM训练全揭秘:打造语言天才的"九年义务教育"1. 数据盛宴:吞下整个互联网2. 核心…

c++入门基本知识掌握

学习要求:1.关键词 (先大致看看哪些学过 不让你背下来 就让你看看)2.命名空间 3.输入输出(cin&cout)4. 缺省参数 5.函数重载 6. 引用 7. 内联函数 8. auto关键字 还有for-each(新用法) 9…

搭建opensbi+kernel+rootfs及基本设备驱动开发流程

目录 一.编译qemu 运行opensbikernelrootfs 1.编译qemu-9.1.1 2.安装riscv64编译器 3. 编译opensbi 4.编译kernel 5.编译rootfs 设备驱动开发流程 1.安装 RISC-V 交叉编译工具链 2.驱动开发准备 3.编写简易中断控制器驱动(PLIC)​ 4.配置内核…

Python基于Django和协同过滤算法实现电影推荐系统功能丰富版

说明:这是一个系统实战项目,如需项目代码可以直接到文章最后关注获取。 项目背景 随着互联网的普及和数字娱乐内容的爆发式增长,用户在海量的电影资源中找到自己感兴趣的影片变得愈发困难。为了提升用户体验并增加用户粘性,我们…

C/C++蓝桥杯算法真题打卡(Day6)

一、P8615 [蓝桥杯 2014 国 C] 拼接平方数 - 洛谷 方法一&#xff1a;算法代码&#xff08;字符串分割法&#xff09; #include<bits/stdc.h> // 包含标准库中的所有头文件&#xff0c;方便编程 using namespace std; // 使用标准命名空间&#xff0c;避免每次调用…

Microsoft Outlook 2024 LTSC for Mac v16.95 电子邮件和日历 支持M、Intel芯片

应用介绍 Microsoft Outlook 2024 LTSC for Mac 是微软为Mac用户推出的一款电子邮件管理和日历应用&#xff0c;属于长期服务通道&#xff08;LTSC&#xff09;版本&#xff0c;适合需要稳定性和长期支持的企业用户。它提供了强大的邮件管理功能、日历功能以及团队协作工具&am…

深度学习 Deep Learning 第1章 深度学习简介

第1章 深度学习简介 概述 本章介绍人工智能&#xff08;AI&#xff09;和深度学习领域&#xff0c;讨论其历史发展、关键概念和应用。解释深度学习如何从早期的AI和机器学习方法演变而来&#xff0c;以及如何有效解决之前方法无法应对的挑战。 关键概念 1. 人工智能的演变 …