harmonyOS:关于Page Ability生命周期详解✨一文搞懂✨

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 文章目录前言一.Ability概述二.Page Ability生命周期1.准备工作2.一阶段运行程序时3.二阶段ACTIVE的状态3.三阶段4.四阶段5.五阶段onStop()方法总结

前言

最近学习Ability这个东西,说实话有点难搞,所以在这里整理一下并分享。


一.Ability概述

官方:Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。


仅个人理解:Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型


1.FA(Feature Ability)可以比作你打开一个应用里面的各种页面,然后这些页面,组成了一个应用这里的FA其实可以约等于为Page Ability约等于page,因为我们在建立FA的时候,他会自动关联Slice,然后多余的AbilitySlice可以通过addActionRoute()方法来添加。


2.PA(Particle Ability)其中PA支持Service Ability和Data Ability,然后这两个我基于官方文档所理解的是它们都是为前面FA所服务的,为FA提供数据支持,后台运行的能力




二.Page Ability生命周期

关于Page Ability的生命周期其实看懂官方文档的一张图片就能搞懂,往下看



1.准备工作

要搞清page跳转时,所发生的一切,我们先写一个跳转代码,然后做好日志,不会的小伙伴看下面的文章

【鸿蒙征程】五.实现页面的跳转✨有参,无参,返回值✨


【鸿蒙征程】四.HiLog日志的使用✨详细记录过程✨


写日志:

将下面的代码放在主类里面


private static final HiLogLabel TAG = new HiLogLabel(HiLog.DEBUG, 0x0, MainAbility.class.getName());
    static final HiLogLabel LOG_LABEL =
            new HiLogLabel(HiLog.LOG_APP, 0x10001,"MainAbility");


MainAbility的onStart代码跳转


public void onStart(Intent intent) {
    super.onStart(intent);
    super.setUIContent(ResourceTable.Layout_ability_main);
    // 点击事件的监听
    text = (Text) findComponentById(ResourceTable.Id_text_helloworld);
    text.setClickedListener(Component -> {
        Intent intent1 = new Intent();
        ElementName mainAbility2 = new ElementName("", "com.harmony.hms3","MainAbility2");
        intent1.setElement(mainAbility2);
        startAbility(intent1);
    });
    }



Ctrl+o,调用这些方法,onStart原本就有了。不用再次调用,把下面的代码放在onStart方法的下面,大家最好自己用Ctrl+o调用,加深印象


 

@Override
    protected void onActive() {
        HiLog.info(LOG_LABEL,"+++++onActive");
        super.onActive();
    }
    @Override
    protected void onInactive() {
        super.onInactive();
        HiLog.info(LOG_LABEL,"+++++++onInactive");
    }
    @Override
    protected void onBackground() {
        super.onBackground();
        HiLog.info(LOG_LABEL,"+++++onBackground");
    }
    @Override
    protected void onForeground(Intent intent) {
        super.onForeground(intent);
        HiLog.info(LOG_LABEL,"+++++onForeground");
    }
    @Override
    protected void onStop() {
        super.onStop();
        HiLog.info(LOG_LABEL,"+++++onStop");
    }



对这些方法进行重写,然后呢每个方法上面加一个日志。日志里面就放这些方法的名字就行了,还有容易找到的特殊符号


2.一阶段运行程序时

初始状态:

INACTIVE状态是一种短暂存在的状态,可理解为“激活中”



初始状态INITIAL—>到onStart方法—>进入INACTIVE方法—>调用onActive方法—>再到激活状态ACTIVE


HiLog日志输出:





3.二阶段ACTIVE的状态

上一个过程已经到达了ACTIVE的状态。紧接着


然后点击“你好,世界”,跳转到下一个页面“hello1111”



也就是由ACTIVE -->到onInactive(),在到达INACTIVE时,与此同时我们马上点击返回,马上回到“你好,世界”的界面,然后又到达onActive(),可以看到日志输出了这两个我打的记号。



3.三阶段

在第二阶段我们回到了ACTIVE的状态,也就是第一步的状态,接下来我们点击“hello,world”,不返回,就停留在这个界面


然后日志就输出了,下面两个+++++++onInactive和+++++onBackground



4.四阶段


在第三阶段的基础上,我们再返回到“你好,世界”的界面,BACKGROUD–>onForegroud()方法–>再到INACTIVE状态–>又调用onActive方法,



5.五阶段onStop()方法

再来看如何用onStop()方法


首先在“你好,世界”的界面,然后返回到桌面,又可以看到日志输出了三个记号,因为从ACTIVE开始到返回桌面这个过程要经过onInactive–>INACTIVE–>onBackground–>onStop,就这个过程


总结

page页面总共4个状态,在程序运行时这几个状态来回的不停的切换:初始状态-->非激活状态-->激活状态-->后台BACKGROUND状态


在状态切换时又有几个方法在调用:onStart(),onActive(),onInactive(),onBackground(),onForeground(),onStop()


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
7月前
|
存储 JSON JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(一) -> Ability开发二
本文档介绍了DataAbility开发、FA卡片开发和WantAgent开发三大模块的内容。DataAbility开发涵盖场景介绍、接口说明及开发步骤,支持数据共享与管理;FA卡片开发包括卡片概述、生命周期回调、接口说明及页面设计,助力应用信息前置展示;WantAgent开发则聚焦行为意图封装,提供启动Ability和发布公共事件的功能。文档详细解析了各模块的实现流程与关键代码示例,为开发者提供了全面指导。
179 20
|
7月前
|
缓存 IDE 调度
【HarmonyOS Next之旅】基于ArkTS开发(一) -> Ability开发一
本文介绍了HarmonyOS中的FA模型及其开发相关内容,包括PageAbility与ServiceAbility的开发方法。FA模型下的Ability分为多种类型,如PageAbility(带UI,用户可见可交互)、ServiceAbility(无UI,在后台提供服务)等。文章详细阐述了PageAbility的生命周期、启动模式及接口使用,并通过代码示例展示了如何启动本地PageAbility和重写生命周期函数。
241 12
|
7月前
|
JavaScript 开发者 C++
HarmonyOS NEXT ArkUI生命周期终极指南 | 组件与页面的关系
本文是关于 HarmonyOS NEXT 中 ArkUI 生命周期的终极指南,深入解析组件与页面的关系及其生命周期特性。文章通过超全场景案例、隐藏技巧和避坑秘籍,帮助开发者轻松掌握生命周期管理。内容涵盖页面级(如 `onPageShow`、`onPageHide`)与组件级(如 `aboutToAppear`、`onDidBuild`)生命周期的区别与应用,并提供实战代码示例,包括基础版与高阶版用法。此外,还总结了十大避坑指南和神奇技巧,如实现页面停留统计与双击退出功能。掌握这些知识,助你精准控制 UI 更新,掌控组件与页面的生死轮回!
280 2
|
9月前
|
人工智能 API 开发者
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
556 27
|
9月前
|
开发者
HarmonyOS NEXT 实战系列09-生命周期
页面与组件生命周期介绍:页面生命周期(@Entry装饰)包含onPageShow、onPageHide、onBackPress等接口,分别在页面显示、隐藏和返回按钮点击时触发;组件生命周期(@Component装饰)包含aboutToAppear和aboutToDisappear,在组件创建与销毁时回调。示例代码展示了生命周期函数的使用场景及执行时机,帮助开发者更好地管理页面和组件状态。
HarmonyOS NEXT 实战系列09-生命周期
|
12月前
|
监控
【HarmonyOS】HMRouter使用详解(三)生命周期
使用HMRouter的页面跳转时,想实现和Navigation一样的生命周期时,需要通过新建生命周期类来实现对页面对某一个生命周期的监控。
368 5
【HarmonyOS】HMRouter使用详解(三)生命周期
|
9月前
|
XML 存储 大数据
Harmony os next~HarmonyOS Ability与页面跳转开发详解
HarmonyOS采用分布式架构,其Ability体系包括Page、Service、Data和Form四大类型Ability。Page Ability支持多页面跳转与数据传递,Service Ability用于后台任务,Data Ability提供数据共享接口,Form Ability实现轻量化卡片服务。本文详细解析了各Ability的开发方法、生命周期管理、跨Ability通信及最佳实践,帮助开发者掌握HarmonyOS应用开发的核心技能。
742 0
|
开发者
FA/Stage模型:理解HarmonyOS的FA(Feature Ability)和Stage(Particle Ability)模型
【10月更文挑战第21天】HarmonyOS作为新一代的操作系统,其独特的FA(Feature Ability)和Stage(Particle Ability)模型为应用开发提供了新的视角。这两种模型分别代表了不同的应用组织方式,下面将详细解释这两种模型的概念、特点以及如何在实际开发中使用它们。
988 4
|
存储 监控 安全
开发者的黄金时代:原生鸿蒙应用市场的全生命周期服务
2024年10月22日,华为发布了HarmonyOS NEXT,标志着鸿蒙生态进入商用发展阶段。原生鸿蒙应用市场全面焕新,不仅在UI设计、互动体验和隐私安全机制上进行了重塑,还为开发者和用户提供了从开发到分发的全生命周期服务。通过统一上架、多端分发、隐私合规保障等措施,原生鸿蒙应用市场助力开发者实现高效、安全的应用开发与分发,为全球数亿鸿蒙用户带来更流畅、更安全的使用体验。
|
调度 UED 开发者
【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式
【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式
1552 0
【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式

热门文章

最新文章