【最新鸿蒙应用开发】——总结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:复用组件从组件树上卸载进入复用缓存之前调用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ 19 之 封装

c19封装.cpp #include <iostream> #include <string.h> using namespace std;// 封装&#xff1a;将行为和属性作为一个整体来表现生活中的事物// 人&#xff1a; 行为&#xff1a; 吃饭 属性&#xff1a; 姓名、年龄 struct person {char name[20];int age;…

LeetCode435无重叠区间

题目描述 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 解析 由于要删除尽可能少的区间 &#xff0c;因此区间跨度大的一定是要先删除的&#xff0c;这样就有两种贪心思想了…

4090显卡 安装cuda 11.3 版本

文章目录 cuda 安装安装过程中会要求选择安装的内容更改cuda地址到你安装的地方 cuda 安装 cuda官网寻找cuda11.3 版本 https://developer.nvidia.com/cuda-11.3.0-download-archive?target_osLinux&target_archx86_64&DistributionUbuntu&target_version20.04&…

使用代理IP常见问题及解答

代理IP在互联网数据收集和业务开展中发挥着重要作用&#xff0c;它充当用户客户端和网站服务器之间的“屏障”&#xff0c;可以保护用户的真实IP地址&#xff0c;并允许用户通过不同的IP地址进行操作。然而&#xff0c;在使用代理IP的过程中&#xff0c;用户经常会遇到一些问题…

Spring 内置BeanPostProcessor 的子子孙孙

Spring 框架已经实现了很多BeanPostProcessor的类&#xff0c;如下是关于BeanPostProcessor 的类图&#xff0c;图片过大&#xff0c;可以下载资源包看。 要能说清楚这些类&#xff0c;挺难&#xff0c;我也不知道怎么写&#xff0c;这几个类都分布在不同的包中&#xff0c;我感…

3389端口修改工具,修改3389端口的操作

3389端口作为远程桌面协议&#xff08;RDP&#xff09;的默认端口&#xff0c;常常成为黑客攻击的目标。为了提高系统的安全性&#xff0c;修改3389端口成为一项重要的安全措施。本文将详细介绍如何使用3389端口修改工具进行专业操作&#xff0c;以确保系统的安全稳定。 一、备…

python 只有ListNode类的情况下,创建链表和遍历链表

class ListNode:def __init__(self, val0, nextNone):self.val valself.next nextif __name__ __main__: linklist dummy ListNode() for x in ([2,4,3]): linklist .next ListNode(x) linklist linklist .nextwhile dummy:print(dummy.val)dummy dummy.next 这里的…

ISO17025认证是什么?怎么做?

ISO17025认证是一种国际通用的实验室质量管理体系认证&#xff0c;其目标是确保实验室的技术能力、管理水平以及测试结果的可靠性和准确性达到国际认可的标准。该认证由国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;IEC&#xff09;联合发布&#xf…

AMS深入浅出

目标&#xff1a; 1. 一、AMS启动流程 ActivityManagerService是 安卓10 以后&#xff0c;将AMS拆分出ActivityTaskManagerService。 1.1 启动入口 AMS是由SystemServer进程启动&#xff0c;在启动过程 startBootStripService&#xff0c;会启动AMS和ATMS服务。 SystemSe…

有向图的负权值边与建模

参见 dijkstra 算法为什么高效 昨天的文字最后提到 “经理办公桌上有一堆报表&#xff0c;让工人拟合一份最佳收支方案&#xff0c;工人用图论建模&#xff0c;就要使用 floyd&#xff0c;bellman-ford 算法。”&#xff0c;为什么工人的建模的熵减过程会出现负权重边&#xf…

下载elasticsearch-7.10.2教程

1、ES官网下载地址 Elasticsearch&#xff1a;官方分布式搜索和分析引擎 | Elastic 2、点击下载Elasticsearch 3、点击 View past releases&#xff0c;查看过去的版本 4、选择版本 Elasticsearch 7.10.2&#xff0c;点击 Download&#xff0c;进入下载详情 5、点击 LINUX X8…

185.二叉树:二叉搜索树的最近公共祖先(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution { public:// 函数用于寻找二叉搜索树中节点 p 和 q 的最低…

实现开发板三盏灯点亮熄灭

实现开发板三盏灯点亮熄灭 typedef struct {volatile unsigned int MODER; // 0x00volatile unsigned int OTYPER; // 0x04volatile unsigned int OSPEEDR; // 0x08volatile unsigned int PUPDR; // 0x0Cvolatile unsigned int IDR; // 0x10volatile unsigned int OD…

实验五 网络中的树

文章目录 5.1 网络中的树第一关 认识树相关知识编程要求代码文件 第2关 根节点的二阶邻居求解方法相关知识编程要求代码文件 第3关 根节点的n阶邻居求解方法相关知识 5.2 权值矩阵与环&#xff08;无向网络&#xff09;第1关 无向网络的权值矩阵相关知识编程要求代码文件 第2关…

CTFHUB-SQL注入-Cookie注入

由于本关是cookie注入&#xff0c;就不浪费时间判断注入了&#xff0c;在该页面使用 burp工具 抓包&#xff0c;修改cookie后面&#xff0c;加上SQL语句&#xff0c;关掉burp抓包&#xff0c;就可以在题目页面显示结果了 判断字段数量 发现字段数量是2列 使用id-1 union sele…

Linux3(进程 编辑文件 用户管理 网络)

目录 一、进程管理 一些命令 1. ps 当前的用户进程 VSZ (Virtual Set Size) RSS (Resident Set Size) 2. kill 进程杀死命令 3. top 查看进程的信息 4. 操作系统负载查看 进程划分 进程的挂起 二、编辑文件 1. Vim编辑器 2. Vim的模式 2.1 一般模式下的操作 …

3d数字家居展馆线上制作工具更具创意

立足于引领未来展览新潮流的出发点&#xff0c;深圳华锐视点3D云展厅依托前沿的Web3D技术和vr全景制作技术&#xff0c;提供Web3D在线创意展厅搭建编辑器&#xff0c;为您打造一个突破时空限制、风格多样的线上展厅。 Web3D在线创意展厅搭建编辑器将您的产品以三维模型的形式生…

React 渲染函数render、初始化函数、更新函数运行了两次,原因为何,如何解决? React.StrictMode

文章目录 Intro官网解释解决另一篇官网文章——初始化函数或更新函数运行了两次 Intro 我在用 react 写一个 demo &#xff0c;当我在某个自定义组件的 return 语句之前加上一句log之后&#xff0c;发现&#xff1a;每次页面重新渲染&#xff0c;该行日志都打印了两次&#xf…

Android Jetpack Compose入门教程(二)

一、列表和动画 列表和动画在应用内随处可见。在本课中&#xff0c;您将学习如何利用 Compose 轻松创建列表并添加有趣的动画效果。 1、创建消息列表 只包含一条消息的聊天略显孤单&#xff0c;因此我们将更改对话&#xff0c;使其包含多条消息。您需要创建一个可显示多条消…

开个技术外挂 | 数字孪生技术如何成为美洲杯帆船赛成功的关键?

若您对数据分析以及人工智能感兴趣&#xff0c;欢迎与我们一起站在全球视野关注人工智能的发展&#xff0c;与Forrester 、德勤、麦肯锡等全球知名企业共探AI如何加速工业变革&#xff0c;共享众多优秀行业案例&#xff0c;开启AI人工智能全球新视野&#xff01;&#xff01; …