鸿蒙4.0开发笔记之ArkTS语法基础之应用生命周期与页面中组件的生命周期(十六)
文章目录
- 一、应用生命周期
- 二、生命周期函数定义
- 三、生命周期五函数练习
一、应用生命周期
1、定义
应用生命周期就是代表了一个HarmonyOS应用中所有页面从创建、开启到销毁等过程的全生命周期。查看路径如下:
Project/entry/src/main/ets/entryability/EntryAbility.ts文件中。

2、应用生命周期函数介绍
(1)状态函数:onCreate(want, launchParam) {...}
- 如用户打开电池管理应用,在应用加载的过程中,在UI界面出现之前,可以在onCreate回调中读取;
- 在Create状态,在UIAbility实例创建时触发,系统会调用onCreate回调。
(2)UI加载函数:onWindowStageCreate(...){...}
onWindowStageCreate(windowStage: window.WindowStage) {
windowStage.loadContent('pages/Index', (err, data) => {
});
}
在onWindowStageCreate(windowStage)中通过loadContent接口设置应用要加载的页面。
(3)onBackground回调函数:onBackground(...) {...}
- 在UIAbility的UI页面完全不可见之后,即UIAbility切换⾄后台时候触发;
- 当地图应用切换到后台状态,可以在onBackground回调中停止定位功能,以节省系统的资源消耗;
- 可以在onBackground回调中释放UI页面不可见时无用的资源,或者在此回调中执行较为耗时的操作。
(4)onForeground回调函数:onForeground(...) {...}
- 在UIAbility的UI页面可见之前,即UIAbility切换至前台时触发;
- 可以在onForeground回调中申请系统需要的资源,或者重新申请在onBackground中释放的资源。
(5)销毁函数:
onWindowStageDestroy(...) {...}
onDestroy(...) {...}
- onWindowStageDestroy在UIAbility实例销毁之前,则会先进入onWindowStageDestroy回调,我们可以在该回调中释放;
- onDestroy在UIAbility销毁时触发,可以在onDestroy回调中进行系统资源的释放、数据的保存等操作。
二、生命周期函数定义
1、页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:
• onPageShow:页面每次显示时触发。
• onPageHide:页面每次隐藏时触发⼀次。
• onBackPress:当用户点击返回按钮时触发。(是手机下方的返回按钮,不是页面的路由返回或者按钮返回)
2、组件生命周,即⼀般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:
• aboutToAppear:组件即将出现时回调该接⼝,具体时机为在创建⾃定义组件的新实例后,在执行其build()函数之前执行。
• aboutToDisappear:在自定义组件即将析构销毁时执行。
3、生命周期关系图

三、生命周期五函数练习
1、练习代码
@Entry
@Component
struct LifeCircle {@State message: string = 'Hello World'@State isAppear:boolean = truebuild() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Divider()Button('显示/隐藏子组件').backgroundColor(Color.Orange).onClick(()=>{this.isAppear = !this.isAppear})if(this.isAppear){LifeCircle_son()}}.width('100%')}.height('100%')}//页面显示onPageShow(){//打印出页面显示的提醒console.log('This Page is onPageShow')}//页面隐藏onPageHide(){//打印出页面隐藏的提醒console.log('This Page is onPageHide')}//页面返回:手机按钮上的返回onBackPress(){//打印出页面返回的提醒console.log('This Page is onBackPress')}//aboutToAppear和aboutToDisappear也可以放在入口组件中,后者表示程序被sha死时调用的函数//组件即将出现时回调该接⼝aboutToAppear(){console.log('This Page is 入口aboutToAppear')}//组件析构销毁时触发的函数aboutToDisappear(){console.log('This Page is 入口aboutToDisappear')}
}//子组件的内容
@Component
struct LifeCircle_son{build(){Column(){Text('显示子组件的内容').fontSize(40).fontStyle(FontStyle.Italic)}}//组件即将出现时回调该接⼝aboutToAppear(){console.log('This Page is 子组件aboutToAppear')}//组件析构销毁时触发的函数aboutToDisappear(){console.log('This Page is 子组件aboutToDisappear')}
}
2、练习效果
要查看Console Log日志的的效果,需要点击DevEco Studio编辑器下方的Log:

然后再在DevEco Studio编辑器点击右侧的Previewr预览器(执行编译),就可以查看到打印到日志的文本:

文章部分内容参考:HarmonyOS4.0教程
相关文章:
鸿蒙4.0开发笔记之ArkTS语法基础之应用生命周期与页面中组件的生命周期(十六)
文章目录 一、应用生命周期二、生命周期函数定义三、生命周期五函数练习 一、应用生命周期 1、定义 应用生命周期就是代表了一个HarmonyOS应用中所有页面从创建、开启到销毁等过程的全生命周期。查看路径如下: Project/entry/src/main/ets/entryability/EntryAbili…...
Android的前台服务
概述 前台服务是用户主动意识到的一种服务,因此在内存不足时,系统也不会考虑将其终止。前台服务必须为状态栏提供通知,将其放在运行中的标题下方。这意味着除非将服务停止或从前台移除,否则不能清除该通知。 在 Android 8.0&…...
99%小白不知道,BI报表能自动生成
BI报表的制作步骤、操作方式都很简单,基本是有手就会,但在繁忙的工作中,还是有很多人没时间去从零开发BI报表。那怎么办呢?99%的小白或许都不知道,BI报表能自动生成。 是的,你没看错,就是由BI系…...
rabbitmq技术
1,docker运行rabbitmq docker run --restartalways -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq 2,新增管理员用户 rabbitmq服务,添加用户以及授权_rabbitmq添加用户授权_ROBOT玲玉的博客-CSDN博客...
鸿蒙4.0开发笔记之ArkTS语法基础之条件渲染和循环渲染的使用(十五)
文章目录 一、条件渲染(if)二、循环渲染(ForEach) 一、条件渲染(if) 1、定义 正如其他语言中的if…else…语句,ArkTS提供了渲染控制的能力,条件渲染可根据应用的不同状态࿰…...
电子设备电路分析(2)-----高速激光脉冲探测器
今天来介绍一个高速激光脉冲探测器,能够快速探测高速激光脉冲,该装置的独特性在于能够分辨上升时间在纳秒量级的脉冲。 光电二极管 高速激光脉冲探测器的核心是一个PIN二极管,也就是光电二极管。光电二极管是一种将光转换为电流的半导体器件…...
WordPress(9)宝塔配置Redis
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、宝塔安装Redis2、安装好先关闭Redis1、Redis密码默认是没有的二、安装php、Redis扩展1.启动Redis三.WordPress 安装Redis1.安装Redis插件2.启动Redis前言 提示:这里可以添加本文要记录的…...
【Qt之QSqlRelationalTableModel】描述及使用
描述 QSqlRelationalDelegate链接: https://blog.csdn.net/MrHHHHHH/article/details/134690139 QSqlRelationalTableModel类为单个数据库表提供了一个可编辑的数据模型,并支持外键。 QSqlRelationalTableModel的行为类似于QSqlTableModel,但允许将列设…...
【Openstack Train安装】四、MariaDB/RabbitMQ 安装
本章介绍了MariaDB/RabbitMQ的安装步骤,MariaDB/RabbitMQ仅需要在控制节点安装。 在安装MariaDB/RabbitMQ前,请确保您按照以下教程进行了相关配置: 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Opensta…...
工业级路由器在智能交通系统(ITS)中的创新应用
智能交通系统(ITS)作为一种先进的交通管理与控制系统,旨在提高交通运输系统的效率、安全性和便捷性。随着科技的不断发展,智能交通系统已经成为城市交通管理的重要组成部分。而工业级路由器作为一种可靠的网络通信设备,…...
React立即更新DOM
正常情况下,react会等待set完毕后再进行页面渲染,所以在set时无法拿到更新后的dom import { useRef, useState } from "react"export default () > {const div useRef(null)const [count, setCount] useState(0)const btnClick () >…...
[JavaScript前端开发及实例教程]计算器井字棋游戏的实现
计算器(网页内实现效果) HTML部分 <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>My Calculator&l…...
数据结构 / 队列 / 循环队列 / 结构体定义和创建
1. 结构体定义 //head.h#ifndef __QUEUE_HEAD_H__ #define __QUEUE_HEAD_H__#include <string.h> #include <stdlib.h> #include <stdio.h>#define MAXSIZE 5 //循环队列最多元素个数typedef char datatype; //数据元素类型typedef struct {datatype data[M…...
Java零基础——Redis篇
1.【熟悉】NoSQL的简介 1.1 什么是NoSQL NoSQL 是 Not Only SQL 的缩写,意即"不仅仅是SQL"的意思,泛指非关系型的数据库。强调Key-Value Stores和文档数据库的优点。 NoSQL产品是传统关系型数据库的功能阉割版本,通过减少用不到或…...
分支和循环
通常来说,C语言是结构化的程序设计语言,这里的结构包括顺序结构、选择结构、循环结构,C语言能够实现这三种结构,如果我们仔细分析,我们日常生活中所见的事情都可以拆分为这三种结构或者它们的组合。 下面我会仔细讲解我…...
MyBatis-xml版本
MyBatis 是一款优秀的持久层框架 MyBatis中文网https://mybatis.net.cn/ 添加依赖 <dependencies><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47<…...
在eclipse中安装python插件:PyDev
在eclipse中安装插件PyDev,就可以在eclipse中开发python了。 PyDev的官网:https://www.pydev.org/ 不过可以直接在eclipse中用Marketplace安装(备注:有可能一次安装不成功,是因为下载太慢了,多试几次&…...
25、pytest的测试报告插件allure
allure简介 在这里,你将找到使用allure创建、定制和理解测试报告所需的一切。开始让你的测试沟通更清晰,更有影响力。 Allure Report是一个实用程序,它处理由兼容的测试框架收集的测试结果并生成HTML报告。 安装allure 1、确保安装了Java…...
从零开始学习 JavaScript APl(七):实例解析关于京东案例头部案例和放大镜效果!
大家好关于JS APl 知识点已经全部总结了,第七部部分全部都是案例部分呢!!(素材的可以去百度网盘去下载!!!) 目录 前言 一、个人实战文档 放大镜效果 思路分析: 关于其它…...
使用Pytoch实现Opencv warpAffine方法
随着深度学习的不断发展,GPU/NPU的算力也越来越强,对于一些传统CV计算也希望能够直接在GPU/NPU上进行,例如Opencv的warpAffine方法。Opencv的warpAffine的功能主要是做仿射变换,如果不了解仿射变换的请自行了解。由于Pytorch的图像…...
SteamCleaner终极指南:3步轻松释放100GB游戏磁盘空间
SteamCleaner终极指南:3步轻松释放100GB游戏磁盘空间 【免费下载链接】SteamCleaner :us: A PC utility for restoring disk space from various game clients like Origin, Steam, Uplay, Battle.net, GoG and Nexon :us: 项目地址: https://gitcode.com/gh_mirr…...
AI编程套餐怎么选:别只看模型和额度,更要看你会不会被绑定
AI Coding 套餐已经不是单纯比模型强弱的时代。Copilot 改成按量计费,Claude 开始做身份验证,真正决定你成本和稳定性的,越来越不是“今天谁最强”,而是“明天规则变了,你还能不能无痛切走”。以前看模型,2…...
ComfyUI-Manager终极指南:快速优化AI工作流性能的完整方案
ComfyUI-Manager终极指南:快速优化AI工作流性能的完整方案 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various c…...
告别黑盒:手把手教你用S-Function在Simulink里打造自己的16QAM调制解调模块
从零构建16QAM通信链路:Simulink S-Function深度开发指南 在通信系统仿真领域,现成模块虽然方便,却常常成为深入理解底层原理的障碍。当我们需要验证特定算法、优化系统性能或进行教学演示时,自主构建核心模块的能力显得尤为重要…...
ARM架构线程私有内存管理及TPMAX0_EL1寄存器详解
1. ARM架构线程私有内存管理概述在ARMv8/v9架构中,线程私有内存(Thread-Private Memory)是一种重要的内存保护机制。它允许操作系统为每个线程定义专属的内存区域,其他线程无法访问,从而提供硬件级别的内存隔离。这种机…...
快图设计:5个理由告诉你为什么这款Vue图片编辑器值得尝试
快图设计:5个理由告诉你为什么这款Vue图片编辑器值得尝试 【免费下载链接】vue-fabric-editor 快图设计-基于fabric.js和Vue的开源图片编辑器,可自定义字体、素材、设计模板。fabric.js and Vue based image editor, can customize fonts, materials, de…...
双模型协同工作流架构解析:从感知到决策的AI工程实践
1. 项目概述:双模型协同工作流的深度解构最近在GitHub上看到一个挺有意思的项目,叫“openclaw-dual-model-workflow”。光看这个名字,就能嗅到一股浓浓的工程实践和架构设计的味道。这不像是一个简单的应用Demo,更像是一个为解决特…...
FiveM服务器智能运维:基于CoPaw多智能体的自动化技能包实战
1. 项目概述:一套为 FiveM 服务器量身定制的智能运维与开发技能包如果你正在运营或开发一个 FiveM 服务器,那么你肯定对“救火队员”这个角色深有体会。服务器半夜崩溃、某个脚本资源突然失效、数据库查询慢到玩家掉线、新装的反作弊插件和原有系统冲突……...
卫星热真空测试中射频功率测量的关键技术突破
1. 卫星热真空测试中的射频功率测量挑战在卫星研制过程中,热真空测试(TVAC)是验证航天器能否承受太空极端环境的关键环节。测试环境需要模拟太空中的高真空(<510⁻⁶ Torr)和极端温度(-196℃至140℃&…...
数据流编排工具 diflowy:从核心概念到实战部署全解析
1. 项目概述:当“绿色”遇上“数据流编排” 最近在开源社区里,一个名为 green-dalii/diflowy 的项目引起了我的注意。乍一看这个名字, green-dalii 像是一个开发者或组织的标识,而 diflowy 则巧妙地融合了“data flow”&…...
