HarmonyOS应用模型Stage基本介绍

文章目录

  • [<font color='coral'> HarmonyOS应用模型概况](# HarmonyOS应用模型概况)
  • [<font color='coral'> Stage模型基本概念](# Stage模型基本概念)
  • [<font color='coral'> Stage模型UIAbiliry的生命周期](# Stage模型UIAbiliry的生命周期)
  • [<font color='coral'> Stage模型的配置文件](# Stage模型的配置文件)
  • [<font color='coral'> 写在后面的话](# 写在后面的话)
  • [<font color='coral'>References](#References)

HarmonyOS应用模型概况

随着系统的演进发展,HarmonyOS先后提供了两种应用模型:

  • FA(Feature Ability)模型:HarmonyOS早期版本开始支持的模型,已经不再主推。

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

Stage模型基本概念

如下图所示,一个项目由多个模块组成,每一个模块都可打包成一个独立的Harmony Ability Package, .hap格式的包,这些模块又可以合并起来打包成一个独立的APP,这样的好处的就是用到哪个模块就安装哪个模块。

实际上一个工程是可以有多个模块的

一个模块基本上就是包含下面这三个要素,一个是源码,一个是资源文件,以及对应的模块,module.json5就说明了这个模块是什么类型

在Stage模型中,实际上是提供了两种Ability, 一种是UIAbility,显示UI的界面的能力,还有一种是ExtensionAbilitu 面向特定场景的能力

Stage模型UIAbiliry的生命周期


上述函数的调用时序如下如所示

Stage模型的配置文件

基于Stage模型创建的工程,有两个重要的配置文件,一个是app.json5。一个是module.json

app.json5是一个应用级别的配置文件,这个文件在AppScope下面,而我们的module.json5是一个模块级别的配置文件,在每一个模块下面都有一个配置文件

我们还可以看到在AppScope这个文件夹下面有一个resources文件夹,在我们的模块下,不仅仅限于entry模块其他的feature模块下都有一个resources文件。 AppScope这个文件夹下面有一个resources文件夹,这个文件夹下面放的是全局的资源,在模块下面的资源文件放置的资源只能供给这个模块使用。

一个模块会先在自己的资源文件夹下找自己需要的资源,同名资源只会使用在模块resource下的资源,如果找不到才会去全局资源中寻找。

可以看一下app.json5里面的内容

javascript 复制代码
{
  "app": {
    "bundleName": "com.example.myapplication",
    "vendor": "example",
    "versionCode": 1000000,
    "versionName": "1.0.0",
    "icon": "$media:app_icon",
    "label": "$string:app_name"
  }
}

bundleName是APP的唯一标识

icon标识的是这个APP的图标

label 表示的是这个APP的名字

他们引用的都是这个AppScope下面的resources内容

module.json如下所示

javascript 复制代码
{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ]
  }
}

在设置文件中的图标和应用的名字是在app.json5中配置的,设置应用桌面的图标和名字是在entry下面的module.json中配置的.


写在后面的话

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程 https://www.cbedai.net/chichoxian


References

  1. https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/application-model-description-0000001493584092-V2
  2. https://www.bilibili.com/video/BV1Ti4y1s79B?p=72&spm_id_from=pageDriver&vd_source=57623809cb42c86b58d359b44bfd8dcf
相关推荐
养猪喝咖啡36 分钟前
ArkTS 文本输入组件(TextInput)详解
harmonyos
养猪喝咖啡40 分钟前
HarmonyOS ArkTS 页面导航(Navigation)全面介绍
harmonyos
养猪喝咖啡40 分钟前
HarmonyOS ArkTS 从 Router 到 Navigation 的迁移指南
harmonyos
养猪喝咖啡43 分钟前
HarmonyOS ArkTS Stack 实战:做一个“悬浮按钮 + 遮罩弹层 + 底部菜单”的完整小项目
harmonyos
Archilect43 分钟前
从几何到路径:ArkUI 下的双层容器、缩放偏移与抛掷曲线设计
harmonyos
养猪喝咖啡44 分钟前
HarmonyOS ArkTS 创建网格 Grid/GridItem:写得顺、适配稳、滚动不卡的那套方法
harmonyos
子榆.2 小时前
Flutter 与开源鸿蒙(OpenHarmony)性能调优实战:从启动速度到帧率优化的全链路指南
flutter·开源·harmonyos
yenggd2 小时前
华为SRv6 BE跨域配置案例
运维·网络·计算机网络·华为
子榆.2 小时前
Flutter 与开源鸿蒙(OpenHarmony)安全加固实战:防逆向、防调试、数据加密全攻略
flutter·开源·harmonyos
低调电报3 小时前
我的第一个开源项目:鸿蒙分布式“口袋健身”教练
分布式·开源·harmonyos