HarmonyOS开发之生命周期

news2025/1/15 16:16:18

文章目录

  • 一、应用生命周期
  • 二、页面生命周期
  • 二、组件生命周期


提示:以下是本篇文章正文内容,下面案例可供参考

一、应用生命周期

可以在项目目录 entryability/EntryAbility.tes 看到整个应用的生命周期

import hilog from '@ohos.hilog';
import UIAbility from '@ohos.app.ability.UIAbility';
import Window from '@ohos.window';
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
// @ts-ignore
// 集成云端SDK
import json from '../agconnect-services.json';
// @ts-ignore
import { initialize } from '@hw-agconnect/hmcore';

// 引入云函数
import cloud from "@hw-agconnect/cloud"


//以下为生命周期执行过程   按照生命周期执行顺序描述
export default class EntryAbility extends UIAbility {


  //onCreate 实例创建执行,进行一些应用初始化方法
  //1.数据准备、变量初始化等 未涉及到UI界面
  onCreate() {
    // 初始化使用SDK
    initialize(this.context,json);
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  }
  

	//2. 当应用的窗口被创建时调用。应用开始展示用户界面
	//窗口分为主窗口和子窗口(主窗口子窗口创建时,都会调用)
	//主窗口:通常在应用启动时创建,用户最初看到的窗口。
    //子窗口:可能在应用运行过程中动态创建,用于显示附加内容或功能(悬浮框)
  onWindowStageCreate(windowStage: Window.WindowStage) {
    let page = 'login';
    // 云函数提供的getCurrentUser 判断是否登录
    cloud.auth().getCurrentUser().then(user=>{
      // 登录跳转首页否则跳转登录页
      if(user){
        page= 'Index'
      }
      windowStage.loadContent('pages/'+page, (err, data) => {
        if (err.code) {
          hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
          return;
        }
        hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %      {public}s', JSON.stringify(data) ?? '');
      });
    })
  }


  //3.应用从后台切换到前台时调用 (在UIAbility的UI可见之前)
  //恢复应用的正常功能,重新启动暂停的任务。
  //此回调适用于主窗口和子窗口,确保窗口内容在前台时的正常显示和交互。
  //可以在onForeground()回调中申请系统需要的资源.
  //或者重新申请在onBackground()中释放的资源
  onForeground() {
    // Ability has brought to foreground
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
  }


 //4.当应用从前台切换到后台时调用 (UIAbility的UI完全不可见之后)
 //暂停或优化后台运行的任务,节省资源。
 //此回调适用于主窗口和子窗口,暂停窗口内容的更新或动画等。
 //释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等
 onBackground() {
    // Ability has back to background
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
  }


//5.当主窗口或子窗口被销毁时调用
//清理与窗口相关的资源,解绑事件监听器。适用于窗口级别的资源清理
onWindowStageDestroy() {
    // Main window is destroyed, release UI related resources
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
  }


//6.当应用完全退出时调用
//彻底清理应用级别的所有资源,释放内存,关闭数据库连接等。
//应用进程结束后,所有资源将被释放
 onDestroy() {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
  }

}

二、页面生命周期

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

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


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


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

@Entry
@Component
struct IndexComponent {
  onPageShow() {
     //页面每次显示时触发
    console.info('IndexComponent onPageShow');
  }

  onPageHide() {
    //页面每次隐藏时触发
    console.info('IndexComponent onPageHide');
  }

  onBackPress() {
    //当用户点击返回按钮时触发
    console.info('IndexComponent onBackPress');
  }

  build() {
    Column() {
      Text('Hello World')
        .fontSize(30)
        .margin(30)
    }.width('100%')
  }
}

二、组件生命周期

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【回收站选址】

题目 代码 #include <bits/stdc.h> using namespace std; const int R 2e91; typedef long long LL; unordered_set<LL> s; int piles[5]; int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1}; int dx1[4] {-1, -1, 1, 1}, dy1[4] {-1, 1, -1, 1};bool check(LL …

找不到ucrtbased.dll无法继续执行代码怎么办,总结5个方法

当计算机系统提示找不到ucrtbased.dll文件时&#xff0c;可能会引发一系列运行问题和故障现象。首先&#xff0c;我们需要了解ucrtbased.dll究竟是什么以及它在操作系统中扮演的角色。ucrtbased.dll是一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;它是Microsoft …

树莓派通过串口驱动HC-08蓝牙模块

树莓派通过串口驱动HC-08蓝牙模块 文章目录 树莓派通过串口驱动HC-08蓝牙模块一、HC-08蓝牙模块介绍二、树莓派与蓝牙模块硬件连接三、树莓派通过蓝牙控制设备 一、HC-08蓝牙模块介绍 蓝牙模块&#xff0c;是一种集成的蓝牙功能的PCB板&#xff0c;用于短距离无线通信&#xff…

小而强大!零一万物 Yi-Coder 模型震撼发布!

前沿科技速递&#x1f680; 在 AI 迅速发展的今天&#xff0c;代码生成和编辑工具已经成为开发者们追求高效开发的重要利器。近日&#xff0c;零一万物正式开源了 Yi-Coder 系列模型&#xff0c;一个专为编程任务设计的强大工具&#xff0c;为开发者们带来了全新的生产力提升方…

记录|C#的软件图标更换

目录 前言一、软件界面的图标二、软件外的图标更新时间 前言 参考文章&#xff1a; 自己开发出的软件&#xff0c;肯定要更换图标&#xff0c;无论是软件打开前还是软件上的。如下图&#xff1a; 一、软件界面的图标 直接在Form的属性中进行icon的更换【如下图&#xff1a;】…

2024年8款好用的图纸加密软件推荐|有效的图纸加密方法分享

在如今信息化迅速发展的时代&#xff0c;图纸作为企业的核心资产之一&#xff0c;特别是工程、制造、建筑等领域的CAD图纸&#xff0c;一旦泄露可能给企业带来巨大的经济损失和竞争风险。因此&#xff0c;如何有效地保护图纸安全&#xff0c;防止泄密&#xff0c;成为了每个企业…

记录:uniapp直播的弹幕的样式修改与发送弹幕会自动滚动到底部两个技巧

1、在直播页面的弹幕评论中&#xff0c;我们希望的样式是&#xff1a; 观众名字&#xff1a;评论 而且颜色有所区分&#xff0c;并在同一行显示 2、我们希望在发弹幕的时候可以回自动滚动到自己发的内容那里 一&#xff1a;弹幕样式修改 因为是小白&#xff0c;前端对于样式这…

Machine Learning Specialization 学习笔记(1)

文章目录 前言一、监督学习二、无监督学习三、一些基本概念线性回归模型简单线性回归多元线性回归模型训练模型评估应用 损失函数 &#xff08;cost function&#xff09;梯度下降 &#xff08;gradient descent&#xff09;多类特征&#xff08;multiple features&#xff09;…

微积分复习笔记 Calculus Volume 1 - 1.5 Exponential and Logarithmic Functions

1.5 Exponential and Logarithmic Functions - Calculus Volume 1 | OpenStax

JavaScript(进阶篇)

&#x1f30f;个人博客主页&#xff1a;心.c 前言&#xff1a;今天讲解的是JavaScript进阶&#xff0c;希望大家可以有所收获&#xff0c;话不多说&#xff0c;开干&#xff01; &#x1f525;&#x1f525;&#x1f525;文章专题&#xff1a;JavaScript &#x1f63d;感谢大家…

Numba坐标索引(CPU + 多线程)

文章目录 一、测试样本 —— 创建样本mask&#xff0c;具有 N 个唯一像素值&#xff0c;每个值有 M 个坐标。二、加速方法&#xff08;1&#xff09;多线程加速 —— 每次提取一个像素值&#xff0c;然后遍历图像&#xff0c;匹配并判断其与初始化坐标的关系。&#xff08;2&am…

传输层 I(传输层提供的服务、UDP协议)【★★★★】

&#xff08;★★&#xff09;代表非常重要的知识点&#xff0c;&#xff08;★&#xff09;代表重要的知识点。 运输层是整个网络体系结构中的关键层次之一。一定要弄清以下一些重要概念&#xff1a; (1) 运输层为相互通信的应用进程提供逻辑通信。 (2) 端口和套接字的意义。 …

OpenCV 之 模版匹配多个对象、图片旋转 综合应用

引言 在图像处理和计算机视觉中&#xff0c;模板匹配是一种常用的技术&#xff0c;用于在一幅较大的图像中查找与给定模板图像相似的部分。然而&#xff0c;在实际应用中&#xff0c;目标物体可能会出现在不同的角度&#xff0c;这就需要我们在匹配之前对模板进行旋转处理。本…

[AHK]动态创建带ListBox的窗口,答选择题的界面

根据传入的窗口标题、提示信息(题干)、列表(选项)生成一个带ListBox的窗口(向导界面)。 AHK v1代码 if(A_ScriptFullPath=A_LineFile)MsgBox % ListBox("窗口标题", "这是一个生成listbox的Demo", "a|b|c|d|",3) return ;-------------…

清华智普ChatGlm批量API多线程写文章软件【glm-4-flash的key免费无限写 】

清华智普GLM-4-Flash经全面测评&#xff0c;在语义理解、数学逻辑、逻辑推理、代码执行以及广泛知识覆盖等方面&#xff0c;其表现显著超越了Llama-3-8B模型。 清华智普GLM-4-Flash模型还具备多种核心功能&#xff0c;包括但不限于流畅的多轮对话能力、内置的网页浏览功能、直…

线上购物商城小程序,uniapp,PHP语言开发在线购物商城小程序

前言&#xff1a; 商城小程序能够帮助商家降低成本、提高效率&#xff0c;为用户提供更加便捷和个性化的购物体验&#xff0c;是移动互联网时代的一种高效商业工具。 一、商城小程序功能有哪些&#xff1f; 基础功能需求 用户注册与登录 - 用户可以通过手机号、微信等方式进…

【第25章】Spring Cloud之Sentinel控制台详解

文章目录 前言一、实时监控二、簇点链路三、流控规则四、熔断规则五、热点规则六、系统规则七、授权规则八、集群流控九、机器列表总结 前言 前面我们详细介绍了Sentinel控制台的安装过程&#xff0c;这里我们来了解各个菜单的功能作用。 一、实时监控 同一个服务下的所有机器…

【网络安全】分析JS文件实现账户接管

未经许可,不得转载。 文章目录 正文正文 网站使用的是简单的OTP(一次性密码)验证机制,通过用户注册时提供的电子邮件发送邮箱验证码。在功能有限的情况下,我选择去分析网站加载的JavaScript文件。 我发现了一个名为 saveJobseekerPasswordInCache 的函数: 这个函数虽然…

等待实质审查的商标可以用吗!

申请注册商标受理书下来后&#xff0c;会有一个等待实质审查&#xff0c;这个审查出来就会出现要么通过初审&#xff0c;要么驳回&#xff0c;要么部分驳回&#xff0c;普推知产商标老杨发现时间大约是三个月左右&#xff0c;所以基本从申请3个月左右就知道结果了。 申请注册商…

智算时空 重塑视界│智汇云舟2024视频孪生产品发布会圆满举行,多个“全球首款”重磅亮相

​秋风送爽&#xff0c;丹桂飘香。9月6日&#xff0c;由北京智汇云舟科技有限公司主办&#xff08;简称&#xff1a;智汇云舟&#xff09;&#xff0c;北京北科软科技有限公司&#xff08;简称&#xff1a;北科软&#xff09;、北京恒升联合科技有限公司&#xff08;简称&#…