鸿蒙进阶篇-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:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见资源分类与访问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.mzph.cn/pingmian/62357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习threejs,使用specularMap设置高光贴图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshPhongMaterial高…

一个简洁的ajax注册登录找回密码切换的前端页面

成功和失败不同颜色显示&#xff0c;纯原生代码不需要jq等第三方插件 <% Language"VBScript" CodePage"65001"%> <% Response.Charset "UTF-8" Session.CodePage "65001" Response.Addheader "Content-Type",&q…

uniapp首页样式,实现菜单导航结构

实现菜单导航结构 1.导入字体图标库需要的文件 2.修改引用路径iconfont.css 3.导入到App.vue中 <style>import url(./static/font/iconfont.css); </style>导航区域代码 VUE代码 <template><view class"home"><!-- 导航区域 --><…

解析客服知识库搭建的五个必要性

在当今竞争激烈的商业环境中&#xff0c;客服知识库的搭建已成为企业提升服务质量、优化客户体验的重要手段。一个完善的客服知识库不仅能帮助企业高效管理客户服务流程&#xff0c;还能显著提升客户满意度和忠诚度。以下是搭建客服知识库的五个必要性&#xff1a; 1. 提升服务…

淘宝Vision Pro:革新购物体验的沉浸式未来

引言 简要介绍淘宝Vision Pro版的背景,包括它在美区AppStore的发布及WWDC上的展示。阐述本文的目的:为读者提供一个全面的功能概览与设计背后的思考。设计原则 列出并简要解释5条设计原则(熟悉、直观、真实、实用、易用)。说明这些原则如何指导整个产品设计过程。核心功能详…

【CSS in Depth 2 精译_062】第 10 章 CSS 中的容器查询(@container)概述 + 10.1 容器查询的一个简单示例

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 【第十章 CSS 容器查询】 ✔️ 10.1 容器查询的一个简单示例 ✔️ 10.1.1 容器尺寸查询的用法 ✔️ 10.2 深入理解容器10.3 与容器相关的单位10.4 容器样式查询的用法10.5 本章小结 文章目录 第 10…

HCIE:详解OSPF,从基础到高级特性再到深入研究

目录 前言 一、OSPF协议基本原理 简介 基本原理 OSPF路由器类型 OSPF网络类型 OSPF报文类型和封装 OSPF邻居的建立的维护 DR和BDR的选举 伪节点 LSDB的更新 OSPF的配置 二、OSPF的高级特性 虚连接&#xff08;Virtual-Link&#xff09; OSPF的LSA和路由选择 OSPF…

think php处理 异步 url 请求 记录

1、需求 某网站 需要 AI生成音乐&#xff0c;生成mp3文件的时候需要等待&#xff0c;需要程序中实时监听mp3文件是否生成 2、用的开发框架 为php 3、文件结构 配置路由设置 Route::group(/music, function () {Route::post(/musicLyrics, AiMusic/musicLyrics);//Ai生成歌词流式…

【VRChat 改模】开发环境搭建:VCC、VRChat SDK、Unity 等环境配置

一、配置 Unity 相关 1.下载 UnityHub 下载地址&#xff1a;https://unity.com/download 安装打开后如图所示&#xff1a; 2.下载 VRChat 官方推荐版本的 Unity 跳转界面&#xff08;VRChat 官方推荐页面&#xff09;&#xff1a;https://creators.vrchat.com/sdk/upgrade/…

ollama部署bge-m3,并实现与dify平台对接

概述 这几天为了写技术博客,各种组件可谓是装了卸,卸了装,只想复现一些东西,确保你们看到的东西都是可以复现的。 (看在我这么认真的份上,求个关注啊,拜托各位观众老爷了。) 这不,为了实验在windows上docker里运行pytorch,把docker重装了。 dify也得重装: Dify基…

详细介绍HTTP与RPC:为什么有了HTTP,还需要RPC?

目录 一、HTTP 二、RPC 介绍 工作原理 核心功能 如何服务寻址 如何进行序列化和反序列化 如何网络传输 基于 TCP 协议的 RPC 调用 基于 HTTP 协议的 RPC 调用 实现方式 优点和缺点 使用场景 常见框架 示例 三、问题 问题一&#xff1a;是先有HTTP还是先有RPC&…

Lesson 10 GNN

听课&#xff08;李宏毅老师的&#xff09;笔记&#xff0c;方便梳理框架&#xff0c;以作复习之用。本节课主要讲了生成式对抗网络&#xff08;GNN&#xff09;。 目录 Generation Network as Generator 到目前为止&#xff0c;我们学习到的是类似于函数的network&#xf…

Scala入门基础(20)数据集复习拓展

一.Stack栈二.Queue 队列 一.Stack栈 Stack:栈&#xff0c;特殊的结构。它对元素的操作是在头部&#xff1a;栈顶 先进后出的队列。pop表示取出&#xff0c;push表示在栈中添加元素 二.Queue 队列 Queue 队列;先进先出.enqueue入队&#xff0c;dequeue出队。

Ubuntu20.04运行DM-VIO

目录 环境配置非ROS环境运行编译运行结果图 ROS环境参考 环境配置 Ubuntu20.04 将项目中Cmakelists.txt中C 和 opencv版本修改下 C 使用 14 opencv使用4 非ROS环境运行 编译 按照官网即可 cd dm-vio mkdir build cd build cmake .. make -j运行 DM-VIO给的命令是 bin/d…

TDengine 签约深圳综合粒子,赋能粒子研究新突破

在高能物理和粒子研究领域&#xff0c;实验装置的不断升级伴随着海量数据的产生与处理。尤其是随着大湾区综合性国家科学中心的建设步伐加快&#xff0c;深圳综合粒子设施研究院&#xff08;以下简称“研究院”&#xff09;作为承载“双区驱动”战略的重要科研机构&#xff0c;…

IDEA连接Apifox客户端

IDEA连接Apifox客户端 一、下载Apifox安装包二、IDEA配置三、配置Apifox和IDEA项目同步 一、下载Apifox安装包 Apifox官网&#xff0c;根据自己的操作系统下载对应的Apifox安装包&#xff0c;我是windows系统所以下载的是windows版。 下载 默认仅为我安装&#xff0c;点击下一…

(C语言) 8大翻译阶段

(C语言) 8大翻译阶段 文章目录 (C语言) 8大翻译阶段⭐前言&#x1f5c3;️8大阶段&#x1f5c2;️1. 字符映射&#x1f5c2;️2. 行分割&#x1f5c2;️3. 标记化&#x1f5c2;️4. 预处理&#x1f5c2;️5. 字符集映射&#x1f5c2;️6. 字符串拼接&#x1f5c2;️7. 翻译&…

php反序列化1_常见php序列化的CTF考题

声明&#xff1a; 以下多内容来自暗月师傅我是通过他的教程来学习记录的&#xff0c;如有侵权联系删除。 一道反序列化的CTF题分享_ctf反序列化题目_Mr.95的博客-CSDN博客 一些其他大佬的wp参考&#xff1a;php_反序列化_1 | dayu’s blog (killdayu.com) 序列化一个对象将…

Spring Boot拦截器(Interceptor)详解

拦截器Interceptor 拦截器我们主要分为三个方面进行讲解&#xff1a; 介绍下什么是拦截器&#xff0c;并通过快速入门程序上手拦截器拦截器的使用细节通过拦截器Interceptor完成登录校验功能 1. 快速入门 什么是拦截器&#xff1f; 是一种动态拦截方法调用的机制&#xff…

使用zabbix监控k8s

一、 参考文献 小阿轩yx-案例&#xff1a;Zabbix监控kubernetes云原生环境 手把手教你实现zabbix对Kubernetes的监控 二、部署经验 关于zabbix监控k8s&#xff0c;总体来说是分为两块内容&#xff0c;一是在k8s集群部署zabbix-agent和zabbix- proxy。二是在zabbix进行配置。…