当前位置:首页 > 技术分析 > 正文内容

HarmonyOS的生命周期

ruisui881周前 (04-23)技术分析13

HarmonyOS 的生命周期管理体系分为 应用、页面、组件 三个层级,其核心逻辑与交互规则如下:

一、应用生命周期(UIAbility 为核心)

  1. 状态流转
    UIAbility 组件的生命周期包括四个状态,通过回调函数管理关键逻辑:
  2. Create 状态:实例创建时触发 onCreate(),用于初始化变量、加载资源等;
  3. Foreground 状态:进入前台时触发 onForeground(),可恢复数据同步或动画;
  4. Background 状态:进入后台时触发 onBackground(),需暂停耗时任务或释放非必要资源;
  5. Destroy 状态:销毁时触发 onDestroy(),清理内存、断开连接等。
  6. WindowStage 关联
  7. 在 onCreate() 后,系统自动创建 WindowStage(窗口舞台),并通过 onWindowStageCreate() 回调通知开发者加载 UI 和设置窗口属性。

二、页面生命周期(@Entry 装饰的组件)

页面生命周期由 @Entry 装饰的根组件管理,包含以下核心接口:

  1. onPageShow:页面每次显示时触发(如应用从后台切换到前台,或路由跳转至该页面);适用于数据刷新、动画恢复等场景。
  2. onPageHide:页面每次隐藏时触发(如路由跳转离开或应用进入后台);可暂停计时器或保存临时数据。
  3. onBackPress:用户点击返回按钮时触发,支持自定义返回逻辑(如弹窗拦截)。

三、组件生命周期(@Component 装饰的自定义组件)

普通组件(非页面根组件)的生命周期通过以下接口实现:

  1. aboutToAppear:组件即将渲染时触发,在 build() 函数执行前调用,用于初始化非 UI 相关数据;
  2. aboutToDisappear:组件即将销毁时触发,用于释放资源或取消订阅事件。

四、执行顺序与交互规则


五、最佳实践

  1. 资源释放:在 onDestroy() 或 aboutToDisappear() 中释放网络连接、定时器等;
  2. 状态恢复:通过 onForeground() 和 onPageShow() 确保前后台切换时数据一致性;
  3. 性能优化:避免在 onCreate() 中执行阻塞性操作,优先使用异步任务。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3552.html

标签: onpageshow
分享给朋友:

“HarmonyOS的生命周期” 的相关文章

vue:组件中之间的传值

一、父子组件之间的传值----props/$emit1、父组件向子组件传值--props2.子组件想父组件传值-this.$emit('select',item)二、父组件向下(深层)子组件传值----provide/injectprovide:Object | () => O...

理解virt、res、shr之间的关系(linux系统篇)

前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。...

身体越柔软越好?刻苦拉伸可能反而不健康 | 果断练

坐下伸直膝盖,双手用力向前伸,再用力……比昨天前进了一厘米,又进步了! 这么努力地拉伸,每个人都有自己的目标,也许是身体健康、线条柔美、放松肌肉、体测满分,也可能为了随时劈个叉,享受一片惊呼。 不过,身体柔软,可以享受到灵活的福利,也可能付出不稳定的代价,并不是越刻苦拉伸越好。太硬或者太软,都不安全...

2024年,不断突破的一年

迈凯伦F1车队不久前拿下了2024年度总冠军,距离上一次还是二十几年前。在此期间,另一领域内,一个充满革新活力的腕表品牌——RICHARD MILLE理查米尔,正不断发展,与F1运动、帆船、古董车展等领域,共享着对速度与极限的无尽向往。RICHARD MILLE的发展与F1车手们在赛道上的卓越表现交...

全新斯柯达柯珞克Karoq深度评测:大众替代品

“斯柯达柯珞克是一款出色的全能家庭 SUV,具有许多有用的功能”价格36,605 英镑- 49,190 英镑优点方便的 VarioFlex 后排座椅非常适合家庭入住驾驶乐趣缺点保修期短保守的内饰性格比Yeti少结论——斯柯达柯珞克是一辆好车吗?斯柯达柯珞克是在辉煌的七座 斯柯达柯迪亚克之后推出的,因...

JavaScript数组操作:掌握常用方法,提升开发效率

JavaScript数组操作:从增删改查到高级应用本文深入解析JavaScript中常用的数组方法,包括push、unshift、pop、shift、map、filter、reverse、at 和 slice。通过详细的例子和应用场景,帮助开发者快速掌握这些方法,提升代码效率和可读性。开篇点题作为J...