其他分享
首页 > 其他分享> > harmonyOS:关于Page Ability生命周期详解✨一文搞懂✨

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

作者:互联网

文章目录

前言

最近学习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日志的使用✨详细记录过程✨


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()

本文含个人理解,如有不恰当欢迎来指正,qq:2024810652


如果对你有帮助,给个赞吧

标签:onActive,Ability,onStart,harmonyOS,onStop,ACTIVE,搞懂,日志
来源: https://blog.csdn.net/m0_53088614/article/details/120855249