当前位置:   article > 正文

HarmonyOS应用模型Stage基本介绍

HarmonyOS应用模型Stage基本介绍

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里面的内容

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

bundleName是APP的唯一标识

icon标识的是这个APP的图标
label 表示的是这个APP的名字

他们引用的都是这个AppScope下面的resources内容
在这里插入图片描述

module.json如下所示

{
  "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"
            ]
          }
        ]
      }
    ]
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

在设置文件中的图标和应用的名字是在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
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号