ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-10-20 09:03:28  阅读:292  来源: 互联网

标签:onActive Ability onStart harmonyOS onStop ACTIVE 搞懂 日志


文章目录

前言

最近学习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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有