文章目录
- 一、应用生命周期
- 二、页面生命周期
- 二、组件生命周期
提示:以下是本篇文章正文内容,下面案例可供参考
一、应用生命周期
可以在项目目录 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() {// 初始化使用SDKinitialize(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 foregroundhilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');}//4.当应用从前台切换到后台时调用 (UIAbility的UI完全不可见之后)//暂停或优化后台运行的任务,节省资源。//此回调适用于主窗口和子窗口,暂停窗口内容的更新或动画等。//释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等onBackground() {// Ability has back to backgroundhilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');}//5.当主窗口或子窗口被销毁时调用
//清理与窗口相关的资源,解绑事件监听器。适用于窗口级别的资源清理
onWindowStageDestroy() {// Main window is destroyed, release UI related resourceshilog.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(){//在自定义组件析构销毁之前执行}