鸿蒙4.0开发笔记之ArkTS语法基础之应用生命周期与页面中组件的生命周期(十六)

文章目录

    • 一、应用生命周期
    • 二、生命周期函数定义
    • 三、生命周期五函数练习

一、应用生命周期

1、定义
应用生命周期就是代表了一个HarmonyOS应用中所有页面从创建、开启到销毁等过程的全生命周期。查看路径如下:
Project/entry/src/main/ets/entryability/EntryAbility.ts文件中。
01
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、生命周期关系图
00

三、生命周期五函数练习

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:
01

然后再在DevEco Studio编辑器点击右侧的Previewr预览器(执行编译),就可以查看到打印到日志的文本:
02
文章部分内容参考:HarmonyOS4.0教程

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

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

相关文章

云上守沪 | 云轴科技ZStack成功实践精选(上海)

为打造国际数字之都,上海发布数字经济发展“十四五”规划,围绕数字新产业、数据新要素、数字新基建、智能新终端等重点领域,加强数据、技术、企业、空间载体等关键要素协同联动,加快进行数字经济发展布局;加快基础软件…

Gee教程7.错误恢复(Panic Recover)

这一章节是实现错误处理机制,是通过中间件形式来实现的。 panic Go 语言中,比较常见的错误处理方法是返回 error,由调用者决定后续如何处理。但是如果是无法恢复的错误,就会触发panic。用户也可以手动触发 panic,当然…

【PTA题目】7-31 前世档案 分数 20

7-31 前世档案 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 网络世界中时常会遇到这类滑稽的算命小程序,实现原理很简单,随便设计几个问题,根据玩家对每个问题的回答选择一条判断树中的路径(如下图所示&#xff09…

【算法】约瑟夫环

约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N6,M5,被杀掉的顺序是:5,4,6,2&a…

搭梯子之后电脑连接WIFI打不开浏览器网页:远程计算机或者设备不接受连接

问题描述: 打不开网页,但是能正常使用微信等app windows网络诊断: 远程计算机或者设备不接受连接 解决办法: 电脑搜索【internet选项】 进入连接,点击局域网设置,将里面的代理服务器选项关掉就可以正常打开…

【Angular开发】Angular中的高级组件

在这个博客中,我将解释Angular中的几个高级组件和机制,它们增强了灵活性、可重用性和性能。 通过熟悉这些高级组件和机制,您可以提高您的Angular开发技能,并在应用程序中利用灵活性、可重用性和性能优化的能力。让我们开始吧&…

flink中处理kafka分区的消息顺序

背景 kafka分区的消息是有序的,那么flink在消费kafka分区的时候消息的顺序是怎么样的呢?还能保持这个有序性吗,本文就来记录下 flink消费kafka分区的顺序性 从上图可知,flink的转换算子比如map,flatMap,f…

一次重新加载所有 maven 项目产生的 OOM

1、解决什么问题? 忘了截图了,用文字描述就是由于Reload All Maven Projects导致的 OOM 异常。 2、尝试与解决 2.1、尝试 2.1.1、尝试清理idea缓存(无效) 2.1.2、重启idea(无效) 2.1.3、重启电脑&am…

Python替代Adobe从PDF提取数据

大家好,PDF文件是官方报告、发票和数据表的通用格式,然而从PDF文件中提取表格数据是一项挑战。尽管Adobe Acrobat等工具提供了解决方案,但它们并不总是易于获取或可自动化运行,而Python则是编程语言中的瑞士军刀。本文将探讨如何利…

SpringMVC修炼之旅(2)基础入门

一、第一个程序 1.1环境配置 略 1.2代码实现 package com.itheima.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;//定义…

Oozie创建定时执行脚本

1,前期创建的有test.sql表数据脚本,一个脚本my_workflow_1,可以看我的上一篇博客Oozie调度工具–一次性脚本文件的创建和执行 2,点击这个查询下面的计划程序中的计划 3,先修改这个项目的名字,然后选择Workflow里面之前自己测试执…

class051 二分答案法与相关题目【算法】

class051 二分答案法与相关题目【算法】 算法讲解051【必备】二分答案法与相关题目 code1 875. 爱吃香蕉的珂珂 // 爱吃香蕉的珂珂 // 珂珂喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉 // 警卫已经离开了,将在 h 小时后回来。 // 珂珂…

Windows利用MMDeploy部署OpenMMLab 模型并使用Python进行部署

目录 前言 一、准备工作 二、安装 MMDeploy 总结 前言 近期在用OpenMMLab构建模型,然后需要使用MMDeploy对模型进行部署。虽然官方文档提供了详细的说明,但是写的太繁琐了,而且在实际部署过程中,发现并不是所有步骤和内容都需要&…

MySQL数据库基础篇

文章目录 前言1.MySQL数据库概述2.SQL2.1 SQL通用语法2.2 SQL分类2.3 DDL2.3.1 数据库操作2.3.2 表操作 2.4 图形化界面工具2.5 DML2.5.1 添加数据2.5.2 修改数据2.5.3 删除数据 2.6 DQL2.6.1 基本语法2.6.2 基础查询2.6.3 条件查询2.6.4 聚合函数2.6.5 分组查询2.6.6 排序查询…

deepflow本地部署过程

本地服务器配置,32C,48G内存 整个过程需要配置k8s,安装helm, 安装grafana, 安装deepflow以及deepflow-ctl,以及部署demo 在采用sealos进行ALL-IN-ONE部署之前, grafana 先安装它 wget -q -O /usr/share/keyrings/gr…

智能优化算法应用:基于蜜獾算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蜜獾算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蜜獾算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜜獾算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

python+requests+excel 接口测试

1、EXCEL文件接口保存方式,如图。 2、然后就是读取EXCEL文件中的数据方法,如下: 1 import xlrd2 3 4 class readExcel(object):5 def __init__(self, path):6 self.path path7 8 property9 def getSheet(self): 10 …

【JavaWeb学习笔记】6 - Tomcat

项目代码 零、在线文档 Apache Tomcat 8 (8.0.53) - Documentation Index WEB开发 1. WEB,在英语中web表示网/网络资源(页面,图片,css,js)意思,它用于表示WEB服务器(主机)供浏览器访问的资源 2. WEB服务器(主机)上供外界访问的Web资源分为: 静态web…

区块链创新应用场景不断拓展,实现去中心化

小编介绍:10年专注商业模式设计及软件开发,擅长企业生态商业模式,商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地;扶持10余个电商平台做到营收过千万,数百个平台达到百万会员,欢迎咨询。 区块…

python自动化测试框架:unittest测试用例编写及执行

本文将介绍 unittest 自动化测试用例编写及执行的相关内容,包括测试用例编写、测试用例执行、测试报告等内容。 官方文档: https://docs.python.org/zh-cn/3/library/unittest.mock.html 1. 测试用例编写 在 unittest 中,一个测试用例通常…