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


相关实践学习
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
相关文章
|
2月前
|
调度 UED 开发者
【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式
【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式
368 0
【鸿蒙软件开发】UIAbility组件概况、生命周期与启动模式
|
2月前
|
开发框架 Java 数据库
初学鸿蒙OS之Ability认知
初学鸿蒙OS之Ability认知
77 0
|
11月前
|
缓存 API 开发者
HarmonyOS学习路之开发篇——Service Ability
基于Service模板的Ability(以下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。Service可由其他应用或Ability启动,即使用户切换到其他应用,Service仍将在后台继续运行。
|
11月前
|
开发者
HarmonyOS学习路之开发篇——Page Ability
Page与AbilitySlice Page模板(以下简称“Page”)是FA唯一支持的模板,用于提供与用户交互的能力。一个Page可以由一个或多个AbilitySlice构成,AbilitySlice是指应用的单个页面及其控制逻辑的总和。
|
11月前
|
存储 关系型数据库 数据管理
HarmonyOS学习路之开发篇——Data Ability
使用Data模板的Ability(以下简称“Data”)有助于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。Data既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享。
|
11月前
|
开发者
HarmonyOS学习路之开发篇——Ability
Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。
HarmonyOS ArkTS Ability内页面的跳转和数据传递
HarmonyOS ArkTS Ability 的数据传递包括有 Ability 内页面的跳转和数据传递、Ability 间的数据跳转和数据传递。本节主要讲解 Ability 内页面的跳转和数据传递。 打开 DevEco Studio,选择一个 Empty Ability 工程模板,创建一个名为 “ArkUIPagesRouter” 的工程为演示示例。
467 1
|
XML 前端开发 Java
(2.1)HarmonyOS鸿蒙Ability创建,XML和Java页面布局UI
(2.1)HarmonyOS鸿蒙Ability创建,XML和Java页面布局UI
141 1
(2.1)HarmonyOS鸿蒙Ability创建,XML和Java页面布局UI
|
Java
【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )(二)
【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )(二)
157 0
【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )(二)
|
Java API Android开发
【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )(一)
【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )(一)
197 0
【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )(一)

热门文章

最新文章