鸿蒙进阶篇-Stage模型、UIAbility

news/2024/12/14 12:15:12/

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

各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今天的学习,鸿蒙进阶篇-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:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见资源分类与访问icon-default.png?t=O83Ahttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides/resource-categories-and-access-0000001774119914
○src > main > module.json5:模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明,详见module.json5配置文件icon-default.png?t=O83Ahttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides/module-configuration-file-0000001820879553
○build-profile.json5:当前的模块信息 、编译信息配置项,包括buildOption、targets配置等。
○hvigorfile.ts:模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。
○obfuscation-rules.txt:混淆规则文件。混淆开启后,在使用Release模式进行编译时,会对代码进行编译、混淆及压缩处理,保护代码资产。详见开启代码混淆icon-default.png?t=O83Ahttps://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 abilitywindowStage.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综合的内容就介绍到这里,愿您能学以致用,开发出精彩的鸿蒙应用!

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


http://www.ppmy.cn/news/1551335.html

相关文章

YOLOX的正负样本分配问题

正负样本分配策略 正解举个例子 YOLOX的正负样本分配策略是目标检测中的一个重要环节,它直接影响模型的训练效果和最终的检测性能。以下是YOLOX正负样本分配策略的总结: 正解 PAN的不同分支选取采样点:在特征金字塔网络(PAN&…

深入浅出 Python 网络爬虫:从零开始构建你的数据采集工具

在大数据时代,网络爬虫作为一种数据采集技术,已经成为开发者和数据分析师不可或缺的工具。Python 凭借其强大的生态和简单易用的语言特点,在爬虫领域大放异彩。本文将带你从零开始,逐步构建一个 Python 网络爬虫,解决实…

速发论文 | 基于 2D-SWinTransformer+1D-CNN-SENet并行故障诊断模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

【k8s深入理解之 Scheme 补充-2】理解 register.go 暴露的 AddToScheme 函数

AddToScheme 函数 AddToScheme 就是为了对外暴露,方便别人调用,将当前Group组的信息注册到其 Scheme 中,以便了解该 Group 组的数据结构,用于后续处理 项目版本用途使用场景k8s.io/apiV1注册资源某一外部版本数据结构&#xff0…

【第十二课】Rust并发编程(三)

前言 这节介绍Rust并发编程之共享可变状态。共享可变状态指的是多个线程访问同一块内存上的数据,要想达到这样的效果,我们必须要了解互斥器,或者说锁,在某个时刻互斥器只允许一个线程访问。,也就意味着每次访问都需要…

【C++】IO库(三):string流

8.3 string 流 sstream 头文件定义了三个类型来支持内存 IO,这些类型可以向 string 写入数据,也可以从 string 读取数据,就像 string 是一个 IO 流一样。 istringstream 从 string 读数据;ostringstream 向 string 写入数据&…

【MATLAB源码-第226期】基于matlab的64QAM系统相位偏移估计HOS算法仿真,对比补偿前后的星座图误码率。

操作环境: MATLAB 2022a 1、算法描述 高阶统计量(HOS)频偏估计算法 高阶统计量(Higher Order Statistics, HOS)频偏估计算法是一种先进的信号处理技术,广泛应用于现代数字通信系统中,以应对和…

【小白学机器学习41】如何从正态分布的总体中去抽样? 获得指定正态分布的样本的2种方法

目录 1 目标:使用2种方法,去从正态分布的总体中去抽样,获得样本 1.1 step1: 首先,逻辑上需要先有符合正态分布的总体population 1.2 从总体中取得样本,模拟抽样的过程 2 从正态分布抽样的方法1 3 从正态分布抽样…