鸿蒙(HarmonyOS)应用开发——应用程序入口UIAbility

news2025/1/12 23:12:18

概述

UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互
UIAbility是系统调度的单元,为应用提供窗口在其中绘制界面

应用程序的几种交互界面形式

  • 点击桌面图标进入应用
    在这里插入图片描述

  • 一个应用拉起另一个应用
    在这里插入图片描述

  • 最近任务列表切回应用
    在这里插入图片描述
    每一个UI Ability实例,都对应于一个最近任务列表中的任务

一个应用可以有一个UIAbility ,也可以有多个UIAbility。一个UIAbility可以对应多个页面

UIAbility 内的页面创建

创建project,选择empty Ability
在这里插入图片描述
在pages 文件下,新建page
在这里插入图片描述

页面间的跳转和数据传递

页面跳转

页面的跳转需要导入router路由模块

import router from ‘@ohos.router’

通过调用 router.pushUrl() 方法

页面跳转的几种方式,根据需要选择一种方式跳转即可。

  • 方式一:API9及以上,router.pushUrl()方法新增了mode参数,可以将mode参数配置为router.RouterMode.Single单实例模式和router.RouterMode.Standard多实例模式。
    在单实例模式下:如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近同url页面会被移动到栈顶,移动后的页面为新建页,原来的页面仍然存在栈中,页面栈的元素数量不变;如果目标页面的url在页面栈中不存在同url页面,按多实例模式跳转,页面栈的元素数量会加1。
router.pushUrl({
  url: 'pages/Second'
})
  • 方式二:API9及以上,router.replaceUrl()方法新增了mode参数,可以将mode参数配置为router.RouterMode.Single单实例模式和router.RouterMode.Standard多实例模式。
    在单实例模式下:如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近同url页面会被移动到栈顶,替换当前页面,并销毁被替换的当前页面,移动后的页面为新建页,页面栈的元素数量会减1;如果目标页面的url在页面栈中不存在同url页面,按多实例模式跳转,页面栈的元素数量不变。
router.replaceUrl({
  url: 'pages/Second'
})

参数传递

在上述页面的跳转中,使用params 传递参数

router.pushUrl({
  url: 'pages/Second',
  params: {
    src: 'Index页面传来的数据',
  }
})

接收参数

在跳转的页面如何接收呢,使用route.getParams方法

 @State src: string = (router.getParams() as Record<string, string>)['src'];

页面返回和参数接收

页面返回

使用router.back()
调用router.back()返回的目标页面需要在页面栈中存在才能正常跳转

  • 默认情况是使用的 router.back()
  • 返回指定页面 router.back({url:‘’})

在调用router.back()方法之前,可以先调用router.enableBackPageAlert()方法开启页面返回询问对话框功能

返回参数

router.back({
  url: 'pages/Index',
  params: {
    src: 'Second页面传来的数据',
  }
})

返回操作不会触发页面的aboutToAppear()函数,但是对于@Entry 修饰的,可以使用onPageShow()函数

生命周期

UIAbility Start
Create
windowStageCreate
Foreground
backGround
windowStageDestroy
Destroy
UIAbility End

当用户浏览、切换和返回到对应应用的时候,应用中的UIAbility实例会在其生命周期的不同状态之间转换。
UIAbility类提供了很多回调,通过这些回调可以知晓当前UIAbility的某个状态已经发生改变:例如UIAbility的创建和销毁,或者UIAbility发生了前后台的状态切换。

  • Create状态,在UIAbility实例创建时触发,系统会调用onCreate回调。可以在onCreate回调中进行相关初始化操作。
import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        // 应用初始化
        ...
    }
    ...
}
  • Foreground和Background状态,分别在UIAbility切换至前台或者切换至后台时触发。
    分别对应于onForeground回调和onBackground回调。

  • Destroy状态,在UIAbility销毁时触发。可以在onDestroy回调中进行系统资源的释放、数据的保存等操作。

UIAbility 启动模式

对于浏览器或者新闻等应用,用户在打开该应用,并浏览访问相关内容后,回到桌面,再次打开该应用,显示的仍然是用户当前访问的界面。

对于应用的分屏操作,用户希望使用两个不同应用(例如备忘录应用和图库应用)之间进行分屏,也希望能使用同一个应用(例如备忘录应用自身)进行分屏。
对于文档应用,用户从文档应用中打开一个文档内容,回到文档应用,继续打开同一个文档,希望打开的还是同一个文档内容。

基于以上场景的考虑,UIAbility当前支持singleton(单实例模式)、multiton(多实例模式)和specified(指定实例模式)3种启动模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1266883.html

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

相关文章

【蓝桥杯选拔赛真题27】C++近似值 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++近似值 一、题目要求 1、编程实现 2、输入输出 二、算法分析

LeetCode.19删除链表的倒数第N个节点(双指针,基本法)

LeetCode.19删除链表的倒数第N个节点 1.问题描述2.解题思路3.代码 1.问题描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#x…

5V摄像机镜头驱动IC GC6208,可用于摄像机,机器人等产品中可替代AN41908

GC6208是一个镜头电机驱动IC摄像机和安全摄像机。该设备集成了一个直流电机驱动器的Iris的PID控制系统&#xff0c;也有两个通道的STM电机驱动器的变焦和对焦控制。 芯片的特点: 内置用于Iris控制器的直流电机驱动器 内置2个STM驱动程序&#xff0c;用于缩放和…

添加通信作者标记、共同作者标记

1 添加通信作者的小信封 添加包&#xff0c;2个小信息长得不太一样选一个用 % \usepackage[misc]{ifsym} \usepackage{marvosym} % 通信小信封 然后在名字后面添加\Letter Ming Li\Letter\textsuperscript{\rm 1}\

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(2)

本篇是在海思嵌入式芯片中移植yolov7和yolov8的第二篇。做一个调试的小总结。 目前手上有SS928还有Hi3516dv500两个板子&#xff0c;3519DV500板子还没开始调。Hi3519dv500和3516是同一套SDK&#xff0c;基本上是一样的&#xff0c;算力稍高一点&#xff0c;ARM主频高一点。 我…

Python自动化测试工具selenium使用指南

概述 selenium是网页应用中最流行的自动化测试工具&#xff0c;可以用来做自动化测试或者浏览器爬虫等。官网地址为&#xff1a;selenium。相对于另外一款web自动化测试工具QTP来说有如下优点&#xff1a; 免费开源轻量级&#xff0c;不同语言只需要一个体积很小的依赖包支持…

【性能测试】服务器常用的性能指标总结,一文概全...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 压测过程中&#…

基于docker的onlyoffice使用--运行JavaSpringExample

背景 我之前看到有开源项目很好地集成了onlyoffice&#xff0c;效果要比kkfilepreview好&#xff08;应当说应用场景不太一样&#xff09;。本文是在window10环境&#xff0c;安装完Docker Desktop的基础上运行onlyoffice&#xff0c;并利用官网JavaSpringExample进行了集成。 …

【古月居《ros入门21讲》学习笔记】09_订阅者Subscriber的编程实现

目录 说明&#xff1a; 1. 话题模型 图示 说明 2. 实现过程&#xff08;C&#xff09; 创建订阅者代码&#xff08;C&#xff09; 配置发布者代码编译规则 编译并运行 编译 运行 3. 实现过程&#xff08;Python&#xff09; 创建订阅者代码&#xff08;Python&…

【SpringBoot篇】登录校验 — JWT令牌

文章目录 &#x1f339;简述JWT令牌⭐JWT特点 &#x1f33a;JWT使用流程&#x1f6f8;JWT令牌代码实现&#x1f354;JWT应用 &#x1f339;简述JWT令牌 JWT全称为JSON Web Token&#xff0c;是一种用于身份验证的开放标准。它是一个基于JSON格式的安全令牌&#xff0c;主要用于…

SUDS代码复现

复现SUDS代码&#xff0c;主要进行环境配置&#xff0c;数据预处理&#xff0c;训练&#xff0c;查看PSNR渲染指标 1、环境配置 根据SUDS提供的environment.yml文件创建环境&#xff0c;由于安装总是出现环境问题&#xff0c;或者某些包无法下载的问题&#xff0c;如图&#…

单个A100生成3D图像只需30秒,这是Adobe让文本、图像都动起来的新方法

2D 扩散模型极大地简化了图像内容的创作流程&#xff0c;2D 设计行业也因此发生了变革。近来&#xff0c;扩散模型已扩展到 3D 创作领域&#xff0c;减少了应用程序&#xff08;如 VR、AR、机器人技术和游戏等&#xff09;中的人工成本。有许多研究已经对使用预训练的 2D 扩散模…

线性回归及案例实操

线性回归 回归处理的问题为预测&#xff1a; 预测房价销售额的预测设定贷款额度总结&#xff1a;上述案例中&#xff0c;可以根据事物的相关特征预测出对应的结果值 什么是回归 那么&#xff0c;这个回归究竟是什么意思呢&#xff1f;其实回归算法是相对分类算法而言的&…

uniapp上架app store详细攻略

​ 目录 uniapp上架app store详细攻略 前言 一、登录苹果开发者网站 二、创建好APP 前言 uniapp开发多端应用&#xff0c;打包ios应用后&#xff0c;会生成一个ipa后缀的文件。这个文件无法直接安装在iphone上&#xff0c;需要将这个ipa文件上架app store后&#xff0c;才…

linux下实现Qt程序开机自启动

要想实现开机自启动&#xff0c;首先&#xff0c;QT是没有这种实现的&#xff0c;最好是靠电脑开机的启动目录启动软件&#xff0c;下面这个目录 /etc/xdg/autostart 这是操作系统中用于配置启动项的目录&#xff0c;该目录下存放着开机自启动的启动器(.desktop)文件&#xf…

VMD-Attention-LSTM 价格预测实战

VMD-Attention-LSTM时间序列价格预测实战 完整数据代码可直接运行_哔哩哔哩_bilibili 数据展示:数据有几万条 足够的 主要模型代码: import tensorflow as tfdef attention_3d_block(inputs,TIME_STEPS,SINGLE_ATTENTION_VECTOR):# inputs.shape = (batch_size, time_steps,…

水离子水壁炉的科技创新与时尚家居潮流

近年来&#xff0c;水离子水壁炉作为家居装饰的新宠儿&#xff0c;正在以其独特的科技创新和时尚设计引领家居潮流。这一新型壁炉不仅注重外观美感&#xff0c;更借助先进科技实现了温馨的火焰效果&#xff0c;成为现代家居中的独特亮点。 水离子水壁炉的科技创新主要体现在其采…

人工智能在内容相关性Content Relevance方面的应用

许多公司在向客户和潜在客户提供内容服务时犯了一个错误&#xff0c;即定制性不足&#xff0c;内容过于通用&#xff0c;可能与每位目标客户都不相关。谈及内容相关性时&#xff0c;人们希望获得有用的信息和问题解决方法&#xff0c;或具有娱乐性和参与性的内容。 为客户提供…

Ubuntu20.04部署TVM流程及编译优化模型示例

前言&#xff1a;记录自己安装TVM的流程&#xff0c;以及一个简单的利用TVM编译模型并执行的示例。 1&#xff0c;官网下载TVM源码 git clone --recursive https://github.com/apache/tvmgit submodule init git submodule update顺便完成准备工作&#xff0c;比如升级cmake版本…

数据库的重要你了解多少?如何保障数据库的安全?

随着信息技术的快速发展&#xff0c;数据库已经成为企业、组织以及个人日常生活中不可或缺的一部分。然而&#xff0c;随着数据库的广泛应用&#xff0c;其安全性问题也日益凸显。数据库的安全性主要包括数据的完整性、保密性和可用性。本文将探讨数据库安全性的重要性、以及如…