鸿蒙进阶篇-Stage模型、UIAbility

"在科技的浪潮中,鸿蒙操作系统宛如一颗璀璨的新星,引领着创新的方向。作为鸿蒙开天组,今天我们将一同踏上鸿蒙基础的探索之旅,为您揭开这一神奇系统的神秘面纱。"

各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今天的学习,鸿蒙进阶篇-Stage模型、UIAbility

在鸿蒙操作系统中:

Stage 模型

Stage 模型是鸿蒙应用开发中的一种架构模型。它将应用的运行环境分为前台和后台两个阶段。前台阶段应用与用户进行交互,后台阶段应用可以进行一些轻量级的处理,如数据保存、资源释放等。Stage 模型有助于提高应用的性能和资源利用效率。

UIAbility

UIAbility 是鸿蒙应用中实现用户界面和交互逻辑的基本单元。一个鸿蒙应用可以包含多个 UIAbility,每个 UIAbility 可以具有独立的页面和逻辑。UIAbility 负责处理页面的生命周期,响应用户操作,并与其他组件进行通信和协作,以提供完整的应用功能和用户体验。

总的来说,Stage 模型和 UIAbility 是鸿蒙开发中构建应用架构和实现功能的重要概念。

State 模型

应用模型是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。


简而言之:应用模型就是应用的施工图纸,规范化了程序的运行流程,项目的结构和文件的功能,咱们了解了这个模型之后就知道:

1实现某个功能时需要在哪个文件编码

2如何感知应用的状态变化(启动,关闭,切后台..)

3需要调整配置时又需要去哪个文件调整

注意:

随着系统的演进发展,先后提供了两种应用模型:
●FA(Feature Ability)模型:从API 7开始支持的模型,已经不再主推。
●Stage模型:从API 9开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的"舞台",因此称这种应用模型为Stage模型。
划重点:咱们目前只需要关注 Stage模型即可,后续没有特别标注指的就是 Stage 模型

核心构成

来看看主要组成部分有哪些
应用模型的构成要素包括:
1应用配置文件
2应用组件
3应用进程模型
4应用线程模型
5应用任务管理模型
咱们目前关注 应用配置文件 和 应用组件 即可,3、4、5 对应的内容会在后续课程中逐步讲解

Stage模型工程目录结构,咱们会在后续的课程中逐步认识内部各种文件的作用

●AppScope > app.json5:应用的全局配置信息。

●entry:HarmonyOS工程模块,编译构建生成一个HAP包。

○src > main > ets:用于存放ArkTS源码。

○src > main > ets > entryability:应用/服务的入口。

○src > main > ets > pages:应用/服务包含的页面。

○src > main > resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见资源分类与访问https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/resource-categories-and-access-0000001774119914

○src > main > module.json5:模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明,详见module.json5配置文件https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/module-configuration-file-0000001820879553

○build-profile.json5:当前的模块信息 、编译信息配置项,包括buildOption、targets配置等。

○hvigorfile.ts:模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。

○obfuscation-rules.txt:混淆规则文件。混淆开启后,在使用Release模式进行编译时,会对代码进行编译、混淆及压缩处理,保护代码资产。详见开启代码混淆https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-build-obfuscation-0000001731754312

●oh_modules:用于存放三方库依赖信息。

●build-profile.json5:应用级配置信息,包括签名signingConfigs、产品配置products等。其中products中可配置当前运行环境,默认为HarmonyOS。

●hvigorfile.ts:应用级编译构建任务脚本。

应用/组件级配置

应用配置

应用配置在工程的 AppScope 目录下的 app.json5 配置文件中

{
  "app": {
    "bundleName": "包名 不可省略",
    "vendor": "应用开发厂商描述 不可省略",
    "versionCode": 版本号,数值越大版本越高,
    "versionName": "给用户看的版本号",
    "icon": "应用图标",
    "label": "应用名"
  }
}

其中 icon 和 label 配置的都是资源索引,配置完毕之后重新运行即可生效

入口图标和标签配置

这部分的配置在模块对应的 module.json5 配置文件中进行

{
  "module": {
    ...
    "abilities": [
      {
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "ohos.want.action.home"
            ]
          }
        ],
      }
    ]
  }
}

目前项目中只有一个module( entry ),同时内部只有一个 ability,所以不用担心设置错误,设置完毕之后重新运行即可

UIAbility 组件

每一个UIAbility实例,都对应于一个最近任务列表中的任务。
UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。

一个应用可以有一个 UIAbility也可以有多个UIAbility,如图所示:

●单 UIAbility:任务列表只有一个任务,应用内部结合【多页面】的形式让用户进行的搜索和浏览内容,页面的跳转使用路由来实现即可(到目前为止咱们做的都是这种)
●多个 UIAbility:那么在任务列表中会有多个任务。比如【wps】

指定 UIAbility 的启动页面

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

import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';

export default class EntryAbility extends UIAbility {
  onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    windowStage.loadContent('pages/Index', (err, data) => {
      // ...
    });
  }

  // ...
}

注意:

1 windowStage.loadContent加载的页面,不可以用 / 开头
2加载的页面需要在 main_pages.json5 中存在
3出现页面白色的(上述 2 个问题)

UIAbility 组件的生命周期

当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列【回调函数】,如果需要在特定的时间添加自定义逻辑,往对应的回调函数内添加代码即可

UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示。

●onCreate:Ability创建时回调,执行初始化业务逻辑操作。
●onDestory:Ability生命周期回调,在销毁时回调,执行资源清理等操作。
●onWindowStageCreate:
○当WindowStage(窗口管理器)创建后调用。
○内部通过 windowStage.loadContent 加载页面
●onWindowStageDestory:当WindowStage销毁后调用。
●onForeground:Ability生命周期回调,当应用从后台转到前台时触发。
●onBackground:Ability生命周期回调,当应用从前台转到后台时触发

以上是关于鸿蒙进阶篇- Stage模型、UIAbility综合的一些内容,方便大家学习,至此,关于鸿蒙进阶篇-Stage模型、UIAbility综合的内容就介绍到这里,愿您能学以致用,开发出精彩的鸿蒙应用!

以上内容仅供学习交流,如有违法或者侵权可以联系删除。

相关推荐
小冷爱学习!8 小时前
华为动态路由-OSPF-完全末梢区域
服务器·网络·华为
2501_904447749 小时前
华为发力中端,上半年nova14下半年nova15,大力普及原生鸿蒙
华为·智能手机·django·scikit-learn·pygame
MarkHD10 小时前
第十八天 WebView深度优化指南
华为·harmonyos
塞尔维亚大汉10 小时前
OpenHarmony(鸿蒙南向)——平台驱动开发【MIPI CSI】
harmonyos·领域驱动设计
别说我什么都不会11 小时前
鸿蒙轻内核M核源码分析系列十五 CPU使用率CPUP
操作系统·harmonyos
feiniao865112 小时前
2025年华为手机解锁BL的方法
华为·智能手机
塞尔维亚大汉12 小时前
OpenHarmony(鸿蒙南向)——平台驱动开发【I3C】
harmonyos·领域驱动设计
VVVVWeiYee12 小时前
BGP配置华为——路径优选验证
运维·网络·华为·信息与通信
今阳14 小时前
鸿蒙开发笔记-6-装饰器之@Require装饰器,@Reusable装饰器
android·app·harmonyos
余多多_zZ15 小时前
鸿蒙初学者学习手册(HarmonyOSNext_API14)_组件截图(@ohos.arkui.componentSnapshot (组件截图) )
学习·华为·harmonyos·鸿蒙·鸿蒙系统