【最新鸿蒙应用开发】——总结ArkUI生命周期

鸿蒙ArkUI相关的生命周期都有哪些?

1. UIAbility生命周期

onCreateonWindowStageCreateonForegroundonBackgroundonWindowStageDestroyonDestroy

  • onCreate:Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用onCreate()回调。可以在该回调中进行页面初始化操作,例如变量定义资源加载等,用于后续的UI展示。

  • onWindowStageCreate():UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()回调,可以在该回调中设置UI加载、设置WindowStage的事件订阅。

  • onForegound():在UIAbility的UI可见之前,如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源。

  • onWindowStageDestory():在UIAbility实例销毁之前,则会先进入onWindowStageDestroy()回调,可以在该回调中释放UI资源。

  • onBackground():在UIAbility的UI完全不可见之后,如UIAbility切换至后台时候触发。可以在onBackground()回调中释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。

  • onWindowStageDestory():在UIAbility实例销毁之前,则会先进入onWindowStageDestroy()回调,可以在该回调中释放UI资源。

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

2. 页面生命周期:

onPageShowonPageHidenBackPress(页面是特殊组件,本身也是组件,包含了所有组件的生命周期函数)

页面生命周期,说白了就是@Entry修饰的组件,才称之为页面。

  • onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。

  • onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景,仅@Entry装饰的自定义组件生效。

  • onBackPress:当用户点击返回按钮时触发,仅@Entry装饰的自定义组件生效。

3. 组件生命周期:

aboutToAppearaboutToDisappearaboutToReusableAPI10+aboutToRecycleAPI10+

  • aboutToAppear:在创建自定义组件的新实例后,在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build()函数中生效。

  • aboutToDisappear:函数在自定义组件销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。

(2个扩展,API10后面新增的组件复用,感兴趣参考上一篇文章【最新鸿蒙应用开发】——组件生命周期(声明式开发范式)-CSDN博客)

组件复用生命周期API10+

  • aboutToReuse:复用组件从复用缓存中加入到组件树之前调用

  • aboutToRecycle:复用组件从组件树上卸载进入复用缓存之前调用

注意点:

如果是跳转的话会触发aboutToAppearonPageShow,要是返回的话aboutToAppear是不触发的,只会触发onPageShow

跳转到另一个页面:

  • 打开第一个页面:

    • Index:aboutToAppear

    • Index:onPageShow

  • 跳转第二个页面:

    • Index:onPageHide

    • Second:aboutToAppear

    • Second:onPageShow

如果是点击back的话:

  • Second:onBackPress

  • Second:onPageHide

  • Index:onPageShow

  • Second:aboutToDisappear

如果是在第二个页面跳转到第一个页面:

  • Index:aboutToAppear

  • Index:onPageShow

  • Second:onPageHide

aboutToAppear和onAppear的区别?

  • aboutToAppear:是组件的生命周期方法,当组件实例创建后,执行build函数之前执行aboutToAppear

  • onAppear:是组件的属性方法,在该组件显示时触发此回调

Text()
.onAppear(()=>{}

4. 综上所述:

生命周期钩子,一共是6+3+2(+2)个,具体如下:

UIAbility生命周期钩子(6个):

  1. onCreate: 应用创建时调用。

  2. onDestroy: 应用销毁时调用。

  3. onWindowStageCreate: WindowStage创建时调用。

  4. onWindowStageDestroy: WindowStage销毁时调用。

  5. onForeground: 应用进入前台时调用。

  6. onBackground: 应用进入后台时调用。

页面组件生命周期钩子(5个):

  1. aboutToAppear: 页面创建时调用。

  2. aboutToDisappear: 页面销毁时调用。

  3. onPageShow: 页面准备展示时调用。(页面特有)

  4. onPageHide: 页面完全隐藏时调用。(页面特有)

  5. onBackPress: 用户返回操作时调用。(页面特有)

组件复用生命周期钩子(2个扩展)API10+

  1. aboutToReuse:复用组件从复用缓存中加入到组件树之前调用

  2. aboutToRecycle:复用组件从组件树上卸载进入复用缓存之前调用

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

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

相关文章

面试官:Spring如何解析配置类

你好,我是柳岸花开。 大家好,今天我们来深入探讨一下Spring框架中的配置类解析与扫描过程的源码。Spring作为Java开发中最为广泛使用的框架之一,其核心机制一直是开发者关注的焦点。本文将带领大家从源码角度,详细剖析Spring配置类…

自动化测试-Selenium-元素定位

一.元素定位 因为使用selenium进行自动化测试,元素定位是必不可少的,所以这篇文章用于自动化测试中的selenium中的元素定位法。 1.根据id属性进行定位(id是唯一的) id定位要求比较高,要求这个元素的id必须是固定且唯…

【数据结构与算法】使用单链表实现队列:原理、步骤与应用

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​ 目录 一、引言 🎄队列的概念 🎄为什么要用单链表实现队列 二、单…

Wireshark TS | 应用传输丢包问题

问题背景 仍然是来自于朋友分享的一个案例,实际案例不难,原因也就是互联网线路丢包产生的重传问题。但从一开始只看到数据包截图的判断结果,和最后拿到实际数据包的分析结果,却不是一个结论,方向有点跑偏,…

java web如何调用py脚本文件

Controller public class IndexController {RequestMapping("/pythonTest")ResponseBodypublic String pythonTest(){// 假设你的Python脚本名为script.pyString pythonScriptPath "D:\\project\\c1\\hello.py";ProcessBuilder processBuilder new Proce…

Python电影项目并连数据库的登录系统

目录 1.项目架构 1.1介绍 1.2系统架构 1.3所需依赖包 2.项目的使用 3.项目效果图 3.1登录界面(login_ui.py): 3.2点击注册,跳转去注册界面(register_ui.py ) 3.3 movie_util.py文件主要功能是抓取和读取电影…

【内存管理】页表映射

页表的一些术语 现在Linux内核中支持四级页表的映射,我们先看下内核中关于页表的一些术语: 全局目录项,PGD(Page Global Directory) 上级目录项,PUD(Page Upper Directory) 中间目…

WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

今天明月给大家分享一下 WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法的教程,在撰写【WordPress 高级缓存插件 W3 Total Cache Pro 详细配置教程】一文的时候明月就发现 W3 Total Cache 已经支持 Brotli 压缩算法了,可惜的是在安装完…

Three.js和Babylon.js,webGL中的对比效果分析!

hello,今天分享一些three.js和babylon.js常识,为大家选择three.js还是babylon.js做个分析,欢迎点赞评论转发。 一、Babylon.js是什么 Babylon.js是一个基于WebGL技术的开源3D游戏引擎和渲染引擎。它提供了一套简单易用的API,使开发…

Anzo 跟单社区现已正式上线!即刻体验无与伦比的强大功能

Anzo 跟单社区现已正式上线! ANZO 跟单社区是一个颠覆性的创新跟单社区平台,作为新一代跟单社区,我们旨在让更多的用户享受跟单交易带来的便捷性和收益性。交易者可以通过跟单社区,学习和分享交易策略,轻松复制交易专家的交易策略…

SpringCloud Gateway中Route Predicate Factories详细说明

官网地址:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories Spring Cloud Gateway将路由匹配作为Spring WebFlux HandlerMapping基础架构的一部分。 Spring Cloud Gateway …

python-微分方程计算

首先导入数据 import numpy as np from scipy.integrate import odeint from scipy.optimize import minimize import matplotlib.pyplot as pltdata np.array([[30, 4],[47.2, 6.1],[70.2, 9.8],[77.4, 35.2],[36.3, 59.4],[20.6, 41.7],[18.1, 19],[21.4, 13],[22, 8.3],[2…

Spring6

一 概述 1.1、Spring是什么? Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测…

项目:基于httplib/消息队列负载均衡式在线OJ

文章目录 写在前面关于组件开源仓库和项目上线其他文档说明项目亮点 使用技术和环境项目宏观结构模块实现compiler模块runner模块compile_run模块compile_server模块 基于MVC结构的OJ服务什么是MVC?用户请求服务路由功能Model模块view模块Control模块 写在前面 关于…

UnityXR Interactable Toolkit如何实现Climb爬梯子

前言 在VR中,通常会有一些交互需要我们做爬梯子,爬墙的操作,之前用VRTK3时,里面是还有这个Demo的,最近看XRI,发现也除了一个爬的示例,今天我们就来讲解一下 如何在Unity中使用XR Interaction Toolkit实现爬行(Climb)操作 环境配置 步骤 1:设置XR环境 确保你的Uni…

HTML静态网页成品作业(HTML+CSS)—— 名人霍金介绍网页(6个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有6个页面。 二、作品演示 三、代…

Tomcat源码解析(八):一个请求的执行流程(附Tomcat整体总结)

Tomcat源码系列文章 Tomcat源码解析(一):Tomcat整体架构 Tomcat源码解析(二):Bootstrap和Catalina Tomcat源码解析(三):LifeCycle生命周期管理 Tomcat源码解析(四):StandardServer和StandardService Tomcat源码解析(五)&…

Seq2seq、编码器解码器神经网络

目录 一、Seq2seq 简介二、编码器三、解码器四、编码器-解码器的训练 遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步! 需掌握的前提知识: LSTM、词嵌入 本文参考:【官方双语】编码、解码神经网…

在Cisco Packet Tracer上配置NAT

目录 前言一、搭建网络拓扑1.1 配置PC机1.2 配置客户路由器1.3 配置ISP路由器 二、配置NAT2.1 在客户路由器中配置NAT2.2 测试是否配置成功 总结 前言 本篇文章是在了解NAT的原理基础上,通过使用Cisco Packet Tracer 网络模拟器实现模拟对NAT的配置,以加…

C语言学习系列:GCC编译器Windows版本MinGW-w64的安装教程

本文图文分享如何安装C语言编译器——MinGW-w64。 只要看到这篇文章,就可以按照文中步骤正确安装MinGW-w64并使用。 一、什么是 MinGW-w64 ? 我们知道C语言是高级语言,必须编译为二进制文件,才能为计算机运行,MinGW…