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的销毁。

注意:

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

3、AbilitySlice生命周期

  1. AbilitySlice作为Page Ability的组成单元,其生命周期是依托于其所属Page生命周期的。
  2. 当Page Ability生命周期发生变化时,它的AbilitySlice也会发生相同的生命周期变化。
  3. AbilitySlice还具有独立于Page Ability的生命周期变化。

4、Service Ability和Data Ability的生命周期

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

Harmony鸿蒙开发 四、Ability的生命周期相关推荐

  1. 软件工程管理之《系统开发方法与项目生命周期的矛盾冲突》

    各位读者大家好,由于本文章是我在闲暇时间来迭代补充编辑的,并不是一次性编辑完成,如果影响大家的阅读感受,尽请大家谅解!!!  >>第一章:项目管理者情况 很高兴能与大家一起分享及探讨关于软 ...

  2. Angular 个人深究(四)【生命周期钩子】

    Angular 个人深究(四)[生命周期钩子] 定义: 每个组件都有一个被 Angular 管理的生命周期. Angular 创建它,渲染它,创建并渲染它的子组件,在它被绑定的属性发生变化时检查它,并 ...

  3. Vue 生命周期探索:第四篇:生命周期-销毁流程

    文章目录 探索学习 Vue 生命周期篇 第四篇:生命周期-销毁流程 生命周期_销毁流程 1. beforeDestory (销毁前) 2. Teardown watchers,child compon ...

  4. 四、项目生命周期和开发生命周期

    一.简介 我们知道项目是暂时性.临时性的工作,具有开始时间和结束时间.正如达尔文进化论与马克思主义哲学认为:世界上任何事物都有其产生.发展和灭亡的过程(自然生命周期).项目同样有其生命周期,即开始.计 ...

  5. 软件测试(概念Ⅱ) · 开发模型 · 软件的生命周期 · 瀑布模型 · 螺旋模型 · 增量模型 · 迭代模型 · 敏捷模型 · scrum · 软件测试模型之 V 模型 W 模型

    一.开发模型的由来 二.软件的生命周期 三.瀑布模型(Waterfall Model) 四.螺旋模型(Spiral Model) 五.增量模型(Incremental Model) 六.迭代模型(Ra ...

  6. 鸿蒙开发-新建Ability与使用image-animator实现图帧动画

    场景 鸿蒙开发-基础组件介绍及chart组件使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118333539 在上面学习了 ...

  7. 【php内核与扩展开发系列】PHP生命周期---启动、终止与模式

    启动与终止 PHP程序的启动可以看做有两个概念上的启动,终止也有两个概念上的终止.其中一个是PHP作为Apache(拿它举例,板砖勿扔)的一个模块的启动与终止,这次启动PHP会初始化一些必要数据,比如 ...

  8. 微信小程序把玩(四)应用生命周期

    为什么80%的码农都做不了架构师?>>>    App() 函数用来注册一个小程序,注意必须在 app.js 中注册,且不能注册多个. 使用方式也跟Android中的Applicat ...

  9. (第四篇)Vue生命周期

    生命周期 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8 ...

最新文章

  1. asp.net/c#字符格式化大总结
  2. android 获取url中的参数
  3. Java基础 集合(Collection)结构详解 Collection和Collections的区别
  4. Java数组和Arrays类
  5. 【渝粤教育】21秋期末考试财务管理10164k2
  6. php mysql 替换 pdo,php操作MySQL数据库之PDO方式
  7. 特定领域因果事件图谱构建项目
  8. java 生成素数_java – 素数生成器逻辑
  9. 计算机主机插线安装驱动程序,刻字机usb驱动设置及使用方法-刻字机USB 接口安装及使用说明...
  10. 实验一 常用元器件的识别与简单测试
  11. 分形、混沌理论、集异璧之大成
  12. java .jar怎么打开_java打开jar文件的方法
  13. 【Arduino实验03 智能红绿灯】
  14. 第八章-分析句子结构
  15. 国内使用cousera
  16. 人工智能在解放客服,还是在解散客服?
  17. ui设计现状与意义_对于ui设计行业来说,用户界面设计的发展现状是什么?
  18. latex如何设置字体并加粗_Latex设置字体大小,加粗,加下划线,变斜体_孩纸气_新浪博客...
  19. 所以为什么要学ps?
  20. 【ROS系列】运行rosrun topic_demo talker出错

热门文章

  1. SpringCloud学习一
  2. python实训报告心得体会-Python学习心得体会
  3. 【No server address listed in hbase:meta for region XX】
  4. 执业兽医资格考试水生动物类题库
  5. 去健身房健身戴什么耳机好、最适合运动健身的健身房耳机推荐
  6. 低学历者已经月入万元是为什么
  7. 手机通过USB共享电脑宽带
  8. 如何搜集你想要的信息
  9. 轻型本地服务器_一小时超轻型漂移机
  10. 苹果三代耳机_【团品2】1.苹果原装数据线以及有线耳机 2.苹果蓝牙耳机