鸿蒙应用生命周期深度解析
·
1. 应用生命周期(Ability):
- 概念:指从应用启动到销毁的整个过程,包括应用的创建、初始化、前台运行、后台运行和销毁等阶段。
- 作用:通过特定的回调函数来实现各个阶段,开发者可以在这些回调中执行相应的操作,如在创建阶段初始化应用所需的数据和资源,在销毁阶段释放所有占用的系统资源,并保存必要的数据。
-
// 1. 应用初始化(冷启动) onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { console.log('应用创建:初始化数据库连接') AppStorage.setOrCreate('userToken', '') // 全局状态初始化 } // 2. 窗口准备就绪 onWindowStageCreate(windowStage: window.WindowStage) { windowStage.loadContent('pages/Index', (err) => { if (err) console.error('UI加载失败') }) } // 3. 应用切回前台(热启动) onForeground() { console.log('恢复后台暂停的音频播放') BackgroundTaskManager.cancelSuspend() // 唤醒后台任务 } // 4. 应用退至后台 onBackground() { console.log('释放摄像头等独占资源') LocalStorage.set('tempData', this.cacheData) // 临时保存现场数据 } // 5. 窗口销毁 onWindowStageDestroy() { this.releaseGLResources() // 释放OpenGL纹理 } // 6. 应用彻底销毁 onDestroy() { Database.closeConnection() // 关闭持久化连接 }2. 页面生命周期:
- 概念:主要针对@Entry修饰的组件,即页面。
- 作用:帮助开发者更好地管理页面的显示和隐藏,以及处理页面间的跳转等情况,以提供更好的用户体验。
-
@Entry @ComponentV2 struct TaskDetailPage { @State taskData: TaskModel = new TaskModel() // 1. 页面即将可见 aboutToAppear() { const taskId = Router.getParam('taskId') this.taskData = Database.queryTask(taskId) // 加载页面数据 } // 2. 页面完全可见 onPageShow() { Analytics.trackPageView('任务详情页') // 埋点统计 this.startTimerAnimation() // 启动交互动画 } // 3. 页面即将离开 aboutToDisappear() { this.autoSaveDraft() // 自动保存草稿 } // 4. 页面完全隐藏 onPageHide() { this.pauseVideoPlayer() // 暂停媒体播放 } // 5. 物理返回键拦截 onBackPress(): boolean { if (this.hasUnsavedChanges) { Dialog.confirm('确定放弃编辑?') return true // 拦截返回操作 } return false } build() { ... } }3. 组件生命周期
- 概念:自定义组件从创建到销毁或复用的过程。
- 作用:使开发者能够在组件的不同阶段进行相应的操作,如初始化组件状态、释放组件资源等,有助于提高组件的可维护性和性能。
-
@ComponentV2 struct CountdownItem { @Prop timerConfig: TimerConfig // 父组件传入配置 @Link @Watch('onCountdownEnd') remainingTime: number // 组件挂载时启动计时器 aboutToAppear() { this.timer = setInterval(() => { this.remainingTime-- }, 1000) } // 组件销毁时清理资源 aboutToDisappear() { clearInterval(this.timer) console.log('释放计时器资源') } // 监听时间归零 onCountdownEnd() { if (this.remainingTime <= 0) { Vibrator.vibrate(1000) // 震动提醒 } } build() { Progress({ value: this.remainingTime / this.timerConfig.totalTime }) .width('100%') } }深入理解鸿蒙生命周期如同掌握应用的心跳节奏,通过合理利用七个核心回调函数:
- 资源调度:在
onCreate/onDestroy管理全局资源 - 状态同步:用
aboutToAppear/disappear保持UI一致性 - 体验优化:借
onPageShow/Hide实现无缝切换
更多推荐


所有评论(0)