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
相关推荐
想你依然心痛2 小时前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与HMAF的“数智视界“——PC端AI智能体沉浸式数据可视化分析工作台
华为·ar·harmonyos·智能体
前端不太难9 小时前
从单页面到系统化:鸿蒙 App 演进路径
华为·状态模式·harmonyos
想你依然心痛11 小时前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与HMAF的“文思智脑“——PC端AI智能体沉浸式智能写作工作台
人工智能·ar·harmonyos·ai写作
小雨青年11 小时前
鸿蒙 HarmonyOS 6 | Pura X Max 鸿蒙原生适配 09:展开态列表增加字段但不变复杂
华为·harmonyos
richard_yuu11 小时前
鸿蒙治愈游戏模块实战|四大轻量解压游戏、ArkTS动画交互与低功耗落地
游戏·交互·harmonyos
阿钱真强道15 小时前
24 鸿蒙LiteOS GPIO中断实战:从原理到上升沿/下降沿详解
harmonyos·中断·rk·liteos·开源鸿蒙·瑞芯微·rk2206
小崽崽116 小时前
华为云云主机 + DeepSeek|快速实现华为云DeepSeek大模型搭建“腾讯云代码助手”客户端集成DeepSeek模型
华为·华为云·腾讯云
cd_9492172117 小时前
鸿蒙系统下抖音存储空间不足怎么办?缓存清理教程
缓存·华为·harmonyos
轻口味20 小时前
HarmonyOS 6.1 全栈实战录 - 14 渲染树透镜:FrameNode 渲染状态感知与高性能 UI 调优实战
ui·华为·harmonyos
HwJack2020 小时前
HarmonyOS NEXT 游戏APP开发中如何正确拦截退出手势
游戏·华为·harmonyos