Stage模型

1、Stage模型介绍

  • HarmonyOS 3.1(API 9)新增模型。
  • 提供了Ability Stage和Window Stage类作为应用组件和window窗口的“舞台”

2、Stage模型的Ability生命周期

  • Ability的生命周期包括 create,Foreground,Background,Destroy四个状态
  • WindowStageCreate和WindowStage Destroy为窗口管理器(WindowStage)在Ability中管理UI界面功能的两个生命周期。

配置第8页面的图

3、Stage模型Ability启动模式

3.1、singleton(单实例模型)
  • singleton是默认情况下的启动模式
  • 每次调用startAbility()方法时,如果应用进程中该类型的Ability实例已经存在,则复用系统的Ability实例,系统中只会存在唯一一个该Ability对象,即在最近任务列表中存在一个该类型的Ability实例。此时,应用的Ability实例已经创建,当再次调用start Ability()方法启动该Ability实例时,只会进入该Ability的onNextWant()回调,不会进入onCreate()和onWindowStageCreate()生命周期回调
  • 进行配置,将model.json5配置文件的launchType字段进行配置
"module": {..."abilities": [{"launchType": "singleton",}]}

3.2、standard(标准实例模型)
  • 在standard启动模式下,每次调用start Ability()方法时,都会在应用进程中创建一个新的该类型的Ability实例,即在最近任务列表中可以看到多个该类型的Ability实例
3.3、specified(指定实例模型)
  • 在specified启动模式下,在Ability实例创建之前,允许开发者为该实例创建一个唯一的字符串key,创建的Ability实例绑定key之后,后续每次调用startAbility()方法时,都会询问应用使用哪个key对应的Ability实例来响应start Ability请求。运行时由Ability内部业务决定是否创建多个实例,如果匹配有该Ability实例的key,则直接拉起与之绑定的Ability实例,否则创建一个新的Ability实例。
  • 例如,用户在应用中重复打开一个文档时,启动的均是最近任务列表中的同一个任务,以及在应用中重复新建文档时,启动的均是最近任务列表中的新任务。这种情况下,可以将Ability配置为specified。当再次调用startAbility()方法启动该Ability实例,且Ability Stage的onAcceptWant()回调匹配到一个已经创建的Ability实例时,再次启动该Ability,只会进入该Ability的onNewWant()回调,不会进入其onCreate() 和 onWindowStageCreate()生命周期回调

4、Ability内页面的跳转和数据传递

4.1、页面跳转
  • 页面间的导航可以通过route模块来实现,页面路由模块根据页面URL找到目标页面,从而实现跳转。通过页面路由模块,可以使用不同的URL访问不同的页面,包括跳转到Ability内指定页面
4.1.1、route.pushUrl()
  • 通过调用route.push()方法,跳转到Aility内的指定页面,每调用一次route.push()都会新建一个页面,默认情况下,页面栈数量会增加1,页面栈支持最大页面数量为32。
  • 当页面站数量较大或者超过32时,可以通过route.clean()方法清除页面栈中的所有历史页面,仅保留当前页面作为栈顶页面
.onClick(() =>{router.pushUrl({url:'pages/SecondPage',params:{src:'第一个页面传递的值'}})
4.1.2、route.pushUrl()加mode参数
  • route.pushUrl()方法新增mode参数,可以将mode参数设置为routerRouterMode.Single单实例模式和routerRouterMode.Standard标准模式。
  • 在单实例模式下,如果目标页面在页面栈中已经存在同URL的页面,离栈顶最近的URL的页面会被移动到栈顶,移动后的页面为新建页面,原来的页面仍然保存在栈中。页面栈数量不变;如果目标页面在页面栈中不存在URL的页面,那么按照标准模式跳转,页面栈数量会加1。
.onClick(() =>{router.pushUrl({url:'pages/SecondPage',params:{src:'第一个页面传递的值'}},router.RouterMode.Single)
})
4.1.3、route.replaceUrl()
  • 通过调用route.placeUrl()方法,跳转到Ability内的指定页面,将使用新的页面替换当前页面,并销毁被替换的当前页面,页面的数量不变
.onClick(() => {router.replaceUrl({url:'pages/SecondPage',params:{src:'第一个页面传递的值'}})
})
4.1.4、route.replaceUrl()加mode参数
  • route.replaceUrl()方法新增mode参数,可以将mode参数设置为routerRouterMode.Single单实例模式和routerRouterMode.Standard标准模式。
  • 在单实例模式下,如果目标页面在页面栈中已经存在同URL的页面,离栈顶最近的URL的页面会被移动到栈顶,替换当前的页面。并销毁被替换的页面,移动后的页面为新建页面,页面栈数量会减1;如果目标页面在页面栈中不存在URL的页面,那么按照标准模式跳转,页面栈数量会保持不变。
.onClick(() => {router.replaceUrl({url:'pages/SecondPage',params:{src:'第一个页面传递的值'}},router.RouterMode.Standard)
})
4.2、接收参数

通过router.getParams()方法接收传递的值

@State message: string = router.getParams()?.['src'];

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

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

相关文章

Airbind - hackmyvm

简介 靶机名称:Airbind 难度:中等 靶场地址:https://hackmyvm.eu/machines/machine.php?vmAirbind 本地环境 虚拟机:vitual box 靶场IP(Airbind):192.168.56.121 跳板机IP(windows 11)&…

Java开发的构建神器:Maven以及如何安装部署Maven

目录 一、Maven引言1.1 Maven的核心概念✍. POM (Project Object Model)✌. 依赖管理✍. 生命周期与构建阶段✌. 插件系统 1.2 Maven的工作流程✍. 读取POM文件:✌. 依赖解析:✍. 构建生命周期:✌. 插件执行:✍. 构建输出&#xf…

测试驱动开发TDD

如何在后端测试代码,测试一个其前端的请求,能否正常处理 以登录请求为例 package com.example.demo.login;import com.example.demo.login.pojo.User; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import…

C++使用教程

目录 一、软件使用 二、C基础规则补充 关键字 整型取值范围 浮点型取值范围 字符型使用规则 字符串型使用规则 布尔类型 常用的转义移字符 三、数组、函数、指针、结构体补充 1.数组 2.函数 声明: 分文件编写: 值传递: 3.指…

Coursera耶鲁大学金融课程:Financial Markets 笔记Week 02

Financial Markets 本文是学习 https://www.coursera.org/learn/financial-markets-global这门课的学习笔记 这门课的老师是耶鲁大学的Robert Shiller https://en.wikipedia.org/wiki/Robert_J._Shiller Robert James Shiller (born March 29, 1946)[4] is an American econom…

Vue3鼠标悬浮个人头像时出现修改头像,点击出现弹框,上传头像使用cropperjs可裁剪预览

实现效果&#xff1a; 鼠标悬浮到头像上&#xff0c;下方出现修改头像 点击修改头像出现弹框&#xff0c;弹框中可上传头像&#xff0c;并支持头像的裁剪及预览 实现方式&#xff1a; 1.tempalte中 <div class"img-box"><img v-if"avatarImgUrl&qu…

JavaScript 传参方法

1. 值传递 在 JavaScript 中&#xff0c;基本类型&#xff08;也称为原始类型&#xff09;包括 undefined、null、boolean、number、string、bigint 和 symbol。这些类型在函数调用时是通过值传递的&#xff0c;这意味着在函数内部修改参数的值不会影响函数外部的原始值。 fu…

常见的网络设备

引入 园区网络安全部署场景 1、路由器&#xff1a; 跨网段通信设备 。 2、交换机&#xff1a; 同网段或跨网段通信设备。 3、AntiDDoS &#xff1a; DDoS 防御系统&#xff0c;通常旁挂部署于网络出口处&#xff0c; 位于防火墙上游&#xff0c;用于减轻防火墙报文处理负担。 …

CENTOS7.9下服务器双网卡bond模式6配置示例

​1.bond口的特点 bond口通过将多个网口进行聚合&#xff0c;多个网口聚合后一方面实现了大带宽传输&#xff0c;另外多网口聚合后也同时具有冗余特性&#xff0c;当其中一个网口down掉后&#xff0c;其他网口会继续转发流量&#xff0c;不会导致流量中断。 2.使用条件 当环境…

CAD二次开发(10)-单行文字的添加+图形修改

1. 单行文字的添加 第一步&#xff1a; 首先在CAD中新增中文样式 输入ST命令&#xff1a; 第二步&#xff1a;代码开发 /// <summary>/// 添加文本信息/// </summary>[CommandMethod("AddText")]public void AddText(){var doc Application.DocumentM…

全氟己酮自动灭火材料表现亮眼!手把手教你自动灭火毯的使用方法

灭火毯的使用方法是什么&#xff1f;很多朋友在购买灭火毯之前&#xff0c;都比较关心这个问题。在这里&#xff0c;我们可以把灭火毯分为两种。一种是传统灭火毯&#xff0c;还有一种是近年来兴起的高科技产品—全氟己酮自动灭火毯。这两种灭火毯的使用方法大有不同&#xff0…

[算法刷题—二分法]寻找插入位置

题目展示: 本道题本身并不是很难,主要是学习和分析二分查找插入位置的方法。 首先大体上分为两种情况: 一.target在待查找的数组之中,返回对应值的下标索引。 二.target不在待查找的数组之中&#xff0c;需要返回target插入位置的索引(原数组有序) 第一种情况不难&#xff…

WordPress 站点 Wp-Login.Php 登录页面,防止被机器扫描爆破终极方法

最近好像不少的 WordPress 站点又迎来了一波疯狂的 wp-login.php 登录页面暴力破解,明月使用的 Dragon 主题也迅速的做出了安全防范响应,第一时间就增强了代码上的安全防御能力。明月代运维的几个站点也在这方面加强了防范措施,基本上实现了永久解决这一顽疾的目标,今天明月…

探索VtKLoader源码中THREE.BufferGeometry的奥秘

1. 介绍 1.1 什么是VtKLoader&#xff1f; VtKLoader是一种用于加载和解析VTK&#xff08;Visualization Toolkit&#xff09;文件格式的JavaScript加载器。VTK是一个用于科学可视化和图形处理的开源软件系统&#xff0c;广泛应用于医学影像处理、地球科学、工程和计算流体动…

使用 Redis + Lua 实现分布式限流

在线工具站 推荐一个程序员在线工具站&#xff1a;程序员常用工具&#xff08;http://cxytools.com&#xff09;&#xff0c;有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具&#xff0c;效率加倍嘎嘎好用。 程序员资料站 推荐一个程序员编程资料站&#xff1a;…

基于minhook的Windows HOOK

MinHook是一个基于微软Detours技术的可移植Hook库&#xff0c;它允许开发者在运行时更改函数定义&#xff0c;而无需修改原始函数代码。以下是关于MinHook的详细介绍&#xff1a; 基本概念 定义&#xff1a;MinHook使用内存污染和跳转技术来实现Hook&#xff0c;使得开发者能…

视频汇聚安防综合管理平台EasyCVR支持GA/T 1400视图库标准及设备接入配置

一、概述 视频汇聚安防综合管理平台EasyCVR视频监控系统已经与公安部GA/T 1400视图库标准协议实现了对接&#xff0c;即《公安视频图像信息应用系统》。 安防监控系统EasyCVR支持采用GA/T 1400进行对接&#xff0c;可实现人脸数据使用的标准化、合规化。其采用统一接口对接雪…

工具清单 - Bug追踪管理

# 工具清单 Bugzilla在新窗口打开 - General-purpose bugtracker and testing tool originally developed and used by the Mozilla project. MPL-2.0 PerlBumpy Booby在新窗口打开 - Simple, responsive and highly customizable PHP bug tracking system. (Source Code在新窗…

初识微信小程序之swiper和swiper-item的基本使用

在我还没接触到微信小程序之前&#xff0c;通常使用轮播要么手写或使用swiper插件去实现&#xff0c;当我接触到微信小程序之后&#xff0c;我看到了微信小程序的强大之处&#xff0c;让我为大家介绍一下吧&#xff01; swiper与swiper-item一起使用可以做轮播图 基本使用&…

分布式技术导论 — 探索分析从起源到现今的巅峰之旅(流式处理到微批处理)

探索分析从起源到现今的巅峰之旅 流式计算回顾流式服务结合分布式特性 流式计算组成部分监控数据处理进度流式分析案例流转数据的衍生存储确认器采取高效策略确认器异常应对策略工作节点故障的处理&#xff08;精确一次处理&#xff09;确认器故障的处理&#xff08;恰好一次处…