欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Harmony鸿蒙开发 四、Ability的生命周期

发布时间:2024/1/8 编程问答 88 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Harmony鸿蒙开发 四、Ability的生命周期 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、Ability的分类

HarmonyOS支持应用以Ability(一个或多个)为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型:

  • FA支持Page Ability:
    Page模板是FA唯一支持的模板,用于提供与用户交互的能力。类似于android的Activity。一个Page实例可以包含一组相关页面,每个页面用一个AbilitySlice实例表示。

  • PA支持Service Ability和Data Ability:

  • Service模板:用于提供后台运行任务的能力。
  • Data模板:用于对外部提供统一的数据访问抽象。

2、Ability的生命周期

三种Ability的生命周期相似。我们这里以Page Ability为例:

  • onStart()
    当系统首次创建Page实例时,触发该回调。对于一个Page实例,该回调在其生命周期过程中仅触发一次,Page在该逻辑后将进入INACTIVE状态。开发者必须重写该方法,并在此配置默认展示的AbilitySlice。

  • onActive()
    Page会在进入INACTIVE状态后来到前台,然后系统调用此回调。Page在此之后进入ACTIVE状态,该状态是应用与用户交互的状态。Page将保持在此状态,除非某类事件发生导致Page失去焦点,比如用户点击返回键或导航到其他Page。当此类事件发生时,会触发Page回到INACTIVE状态,系统将调用onInactive()回调。此后,Page可能重新回到ACTIVE状态,系统将再次调用onActive()回调。因此,开发者通常需要成对实现onActive()和onInactive(),并在onActive()中获取在onInactive()中被释放的资源。

  • onInactive()
    当Page失去焦点时,系统将调用此回调,此后Page进入INACTIVE状态。开发者可以在此回调中实现Page失去焦点时应表现的恰当行为。

  • onBackground()
    如果Page不再对用户可见,系统将调用此回调通知开发者用户进行相应的资源释放,此后Page进入BACKGROUND状态。开发者应该在此回调中释放Page不可见时无用的资源,或在此回调中执行较为耗时的状态保存操作。

  • onForeground()
    处于BACKGROUND状态的Page仍然驻留在内存中,当重新回到前台时(比如用户重新导航到此Page),系统将先调用onForeground()回调通知开发者,而后Page的生命周期状态回到INACTIVE状态。开发者应当在此回调中重新申请在onBackground()中释放的资源,最后Page的生命周期状态进一步回到ACTIVE状态,系统将通过onActive()回调通知开发者用户。

  • onStop()
    系统将要销毁Page时,将会触发此回调函数,通知用户进行系统资源的释放。销毁Page的可能原因包括以下几个方面:

  • 用户通过系统管理能力关闭指定Page,例如使用任务管理器关闭Page。
  • 用户行为触发Page的terminateAbility()方法调用,例如使用应用的退出功能。
  • 配置变更导致系统暂时销毁Page并重建。
  • 系统出于资源管理目的,自动触发对处于BACKGROUND状态Page的销毁。

注意:

  • 以上关于生命周期的描述和图表来自华为鸿蒙开发文档:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-lifecycle-0000000000029840
  • onStart()在整个生命周期过程中仅触发一次,而onActive()在每一次从后台回到前台的时候都会被调用,所以我们开发时,把只需要加载一次的资源放在onStart()中进行,而onActive()里可加载一些实时变更的数据及资源。
  • 开发者通常需要成对实现onActive()和onInactive(),并在onActive()中获取在onInactive()中被释放的资源。
  • 3、AbilitySlice生命周期

  • AbilitySlice作为Page Ability的组成单元,其生命周期是依托于其所属Page生命周期的。
  • 当Page Ability生命周期发生变化时,它的AbilitySlice也会发生相同的生命周期变化。
  • AbilitySlice还具有独立于Page Ability的生命周期变化。
  • 4、Service Ability和Data Ability的生命周期

    参考:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-lifecycle-0000000000044472

    总结

    以上是生活随笔为你收集整理的Harmony鸿蒙开发 四、Ability的生命周期的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。