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
相关推荐
雪芽蓝域zzs36 分钟前
鸿蒙Next开发 获取APP缓存大小和清除缓存
缓存·华为·harmonyos
Robot2514 小时前
「华为」人形机器人赛道投资首秀!
大数据·人工智能·科技·microsoft·华为·机器人
鸿蒙布道师4 小时前
鸿蒙NEXT开发动画案例5
android·ios·华为·harmonyos·鸿蒙系统·arkui·huawei
小诸葛的博客12 小时前
华为ensp实现跨vlan通信
网络·华为·智能路由器
康康这名还挺多14 小时前
鸿蒙HarmonyOS list优化一: list 结合 lazyforeach用法
数据结构·list·harmonyos·lazyforeach
晚秋大魔王17 小时前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——nettle库
linux·开源·harmonyos
python算法(魔法师版)21 小时前
.NET 在鸿蒙系统上的适配现状
华为od·华为·华为云·.net·wpf·harmonyos
bestadc1 天前
鸿蒙 UIAbility组件与UI的数据同步和窗口关闭
harmonyos
枫叶丹41 天前
【HarmonyOS Next之旅】DevEco Studio使用指南(二十二)
华为·harmonyos·deveco studio·harmonyos next
ax一号街阿楠1 天前
华为FAT AP配置 真机
网络·华为·智能路由器