HarmonyOS 应用开发学习笔记 ets组件生命周期

HarmoryOS Ability页面的生命周期
@Component自定义组件
ets组件生命周期官放文档

本文讲解 ets组件的生命周期,在此之前大家可以先去了解Ability的生命周期,这两个生命周期有有一定的关联性

在开始之前,我们先明确自定义组件和页面的关系:

  • 自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用。
  • 页面:即应用的UI页面 :可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。

组件定义:@Entry 、 @Component
在这里插入图片描述

页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:

方法名描述
onPageShow页面每次显示时触发。
onPageHide页面每次隐藏时触发一次。
onBackPress当用户点击返回按钮时触发。

组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:

方法名描述
aboutToAppear组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
aboutToDisappear在自定义组件即将析构销毁时执行。

生命周期流程如下图所示,下图展示的是被@Entry装饰的组件(首页)生命周期。

在这里插入图片描述

代码示例:

import { ComponentA } from './ComponentA'

@Entry
@Component
struct Index {

  @State message: string = '工欲善其事,必先利其器'
  @State message2: string = ''
  @State message3: string = '拥抱时代'
  @State message4: string = '点11击事件'
  @State message5: number = 2

  // 只有被@Entry装饰的组件才可以调用页面的生命周期
  onPageShow() {
    console.info('muzi102 Index onPageShow');
  }
  // 只有被@Entry装饰的组件才可以调用页面的生命周期
  onPageHide() {
    console.info('muzi102 Index onPageHide');
  }
  
  // 只有被@Entry装饰的组件才可以调用页面的生命周期
  onBackPress() {
    console.info('muzi102 Index onBackPress');
  }

  // 组件生命周期
  aboutToAppear() {
    console.info('muzi102 MyComponent aboutToAppear');
  }

  // 组件生命周期
  aboutToDisappear() {
    console.info('muzi102 MyComponent aboutToDisappear');
  }

  build() {
    Row() {
      Column() {
        //引入组件ComponentA
        ComponentA({ msg: this.message3 })

        Divider().padding(10)
        //引入组件ComponentA
        // ComponentA({ msg: this.message })
      }.padding(20)
    }
  }
}

启动后:
先调用组件的 aboutToAppear(),再调用 onPageShow() (如果被@Entry修饰)
在这里插入图片描述

事件触发流程
点击返回按钮触发页面生命周期Index onBackPress,且触发返回一个页面后会导致当前Index页面被销毁。
最小化应用或者应用进入后台触发Index onPageHide。当前Index页面没有被销毁,所以并不会执行组件的aboutToDisappear。应用回到前台,执行Index onPageShow。
退出应用执行Index onPageHide --> MyComponent aboutToDisappear --> Child aboutToDisappear。

最后:

官网文档里有一句话:
一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期
经木子测,自定义组件用@Entry修饰了不能触发(onPageShow、onPageHide、onBackPress )回调
在这里插入图片描述
即:

  • index.ets 组件(入口组件) 能触发 onPageShow、onPageHide、onBackPress、aboutToAppear、aboutToDisappear

  • 自定义组件ComponentA 仅能触发(aboutToAppear、aboutToDisappear)

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

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

相关文章

C/C++动态内存分配 malloc、new、vector(简单讲述)

路虽远,行则将至 事虽难,做则必成 今天来主要讲C中动态内存分配 其中会穿插一些C的内容以及两者的比较 如果对C语言中的动态内存分配还不够理解的同学 可以看看我之前的博客:C语言动态分配 在讲解C的动态内存分配之前 我们先讲一下C内存模型 &#xff1…

Java+springboot+vue智慧校园源码,数据云平台Web端+小程序教师端+小程序家长端

技术架构: Javaspringbootvue element-ui小程序电子班牌:Java Android演示自主版权。 智慧校园电子班牌人脸识别系统全套源码,包含:数据云平台Web端小程序教师端小程序家长端电子班牌 学生端。 电子班牌系统又称之为智慧班牌&am…

低代码平台受到欢迎的原因有哪些?

在当今快速发展的数字化时代,应用程序开发已成为企业不可或缺的关键环节。传统的代码开发方式虽然稳定、强大,但对于许多企业来说,其耗时、成本高昂且对技术要求较高,因此,低代码开发被越来越多的企业选择。 低代码开发…

Jenkins的环境部署,(打包、发布、部署、自动化测试)

一、Tomcat环境安装 1.安装JDK(Java环境) JDK下载地址:Java Downloads | Oracle 安装好后在系统环境变量里配置环境变量: ①添加JAVA_HOME 变量名:JAVA_HOME变量值:C:\Program Files\Java\jdk1.8.0_18…

《设计模式》之策略模式

策略模式定义 比如对象的某个行为,在不同场景有不同实现方式,可以将这些行为的具体实现定义为一组策略,每个实现类实现种策略,在不同场景使用不同的实现,并且可以自由切换策略。 策略模式结构 策略模式需要一个策略…

如何用二维码看视频?视频做成二维码的快捷教程

现在将视频存入二维码中之后,让其他人通过扫码的方式来看视频是一种很流行的方式,那么视频是怎么制作成二维码的呢?对于想要学习制作视频二维码的小伙伴,可以学习一下本篇文章带来的制作方法,通过二维码视频生成器就可…

量子计算突破5G通信MIMO优化!真机测试完整报告公开!

​摘要:在无线通信领域,大规模多输入多输出 (MIMO)是一项革命性技术,也是5G系统的关键技术之一,它主要利用基站上的大量天线来提高无线通信系统的覆盖范围和容量。通过波束赋形,大规模MIMO可以同时提供多种…

工业物联网中的网络建设是如何实现的?——青创智通工业物联网

在工业物联网的应用中,如何进行网络建设,对于青创智通工业物联网来说,车间内所有装备均可通过与OPC UA网关连接实现数据采集,OPC UA网关实现Modbus协议、DLT645协议、BACnet协议、CJ188协议、三菱协议、西门子协议、Mbus协议。 通…

大数据开发与低代码:加速数据处理与解决方案开发

随着数据量的爆炸式增长,大数据开发变得愈发重要。然而,传统的大数据开发方法往往需要复杂的编码和开发过程,消耗时间和资源。而低代码开发平台的出现为大数据开发带来了全新的解决方案。本文将介绍大数据开发和低代码的概念,并探…

零售EDI:Metro EDI项目案例

麦德龙Metro 总部位于杜塞尔多夫,在全球范围内经营批发和零售业务。在2018/2019 财年,麦德龙Metro 的全球销售额约为 270 亿欧元。从2016年开始,麦德龙Metro就开始对其当时约230家门店和20,000多家分销合作伙伴进行数字化整合,借助…

UseContentHash选项能否在打包AssetBundle时计算可靠的Hash

1)UseContentHash选项能否在打包AssetBundle时计算可靠的Hash 2)如何清理Native Reserved部分的内存 3)Addressables资源完整性校验 4)通过Image.color和CanvasRenderer.SetColor修改UI组件颜色的区别 这是第368篇UWA技术知识分享…

kubernetes(K8s)的使用和常用命令

K8S kubernetes,由于k和s之间有8个字符,所以简称k8s,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2015年7月发布第一个正式版本,它的本质…

密码学:一文看懂Base64算法

文章目录 前言什么是Base64?Base64算法的由来Base64算法的定义Base64算法与加密算法的关系实现原理非ASCII码字符编码传递模型应用场景电子邮件传输网络数据传输密钥存储数字证书 参考 前言 Base64常常在我们开发中出现,我们可能只知道它是一串乱码&…

60m长H型钢在线测长与切割是如何做到的?

H型钢是断面形状类似于大写拉丁字母H的一种经济断面型材,又叫万能钢梁、宽缘(边)工字钢或平行翼缘工字钢。应用范围广,各种民用和工业建筑结构,各种大跨度的工业厂房和现代化高层建筑,大型桥梁等均可看到H型钢的身影。 它应用所在…

opencv入门到精通——Canny边缘检测

目录 理论 OpenCV中的Canny Edge检测 附加资源 在本章中,我们将学习 Canny边缘检测的概念 OpenCV函数: cv.Canny() 理论 Canny Edge Detection是一种流行的边缘检测算法。它由John F. Canny发明 1.这是一个多阶段算法,我们将经历每个阶段。 2.降…

C 练习实例19

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如61+2+3.编程找出1000以内的所有完数。 程序分析:请参照:C 练习实例14。 步骤分析: 写一个函数判断是否是完数 找出…

Avalonia学习(十七)-CEF

今天开始继续Avalonia练习。 本节:CefNet 1.引入 CefNet.Avalonia.Eleven 2.项目引入 Program中加入 using Avalonia; using Avalonia.ReactiveUI; using Avalonia.Threading; using CefNet; using System; using System.IO; using System.Linq; using System…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion Cauchy’s Argument Priciple 柯西幅角原理 结论: s s s平面内顺时针画一条闭合曲线 A A A, B B B曲…

Python从入门到网络爬虫(函数详解)

前言 函数是变成语言中最常见的语法,函数的本质就是功能的封装。使用函数可以大大提高编程效率与程序的可读性。函数是能够实现特定功能的计算机代码而已,他是一种特定的代码组结构。 函数的作用 1.提升代码的重复利用率,避免重复开发相同代…

【代数学作业1-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题

代数学作业1-完整版:python实现GNFS一般数域筛 写在最前面背景在GNFS算法中选择互质多项式时,需要考虑哪些关键因素,它们对算法的整体运行时间有何影响? 练习1题目题目分析Kleinjung方法简介通用数域筛法(GNFS)中的多…