鸿蒙系统Ability生命周期测试

    最近对鸿蒙系统的基本架构有了一些浅显的了解,于是打算开始学习下开发,开发的第一步当然是从Ability的使用开始。

首先测试下Ability的生命周期,全部代码如下:

package com.example.test3;

import com.example.test3.slice.MainAbilitySlice;
import com.example.test3.utils.HiLogUtil;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;

public class MainAbility extends Ability {

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setMainRoute(MainAbilitySlice.class.getName());
        log("Test3 onStart");
    }

    @Override
    protected void onActive() {
        super.onActive();
        log("Test3 onActive");
    }

    @Override
    protected void onInactive() {
        super.onInactive();
        log("Test3 onInactive");
    }

    @Override
    protected void onForeground(Intent intent) {
        super.onForeground(intent);
        log("Test3 onForeground");
    }

    @Override
    protected void onStop() {
        super.onStop();
        log("Test3 onStop");
    }

    public static void log(String log){
        HiLogLabel logLabel = new HiLogLabel(HiLog.LOG_APP,0,"我的日志");
        HiLog.info(logLabel,log);
    }
}

1.应用安装好后,点击启动:

01-08 15:07:18.532 7230-7230/? I 00000/我的日志: Test3 onStart
01-08 15:07:18.552 7230-7230/? I 00000/我的日志: Test3 onActive

2.点击home键返回桌面:

01-08 15:08:24.978 7230-7230/? I 00000/我的日志: Test3 onInactive

3.重新点击图标进入应用:

01-08 15:09:17.567 7230-7230/? I 00000/我的日志: Test3 onForeground
01-08 15:09:17.611 7230-7230/? I 00000/我的日志: Test3 onActive

4.由应用进入任务栏:

01-08 15:10:32.296 7230-7230/? I 00000/我的日志: Test3 onInactive

5.由任务栏回到应用:

01-08 15:11:27.416 7230-7230/? I 00000/我的日志: Test3 onForeground
01-08 15:11:27.424 7230-7230/? I 00000/我的日志: Test3 onActive

6.由任务栏直接清理掉后台:

01-08 15:12:24.007 7230-7230/? I 00000/我的日志: Test3 onStop

7.由应用按返回键退出应用:

01-08 15:13:50.550 7252-7252/com.example.test3 I 00000/我的日志: Test3 onInactive
01-08 15:13:51.253 7252-7252/com.example.test3 I 00000/我的日志: Test3 onStop

 

以下是官方说明文档的图示及解释:

 

  • 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的销毁。
  • 官方文档链接:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-lifecycle-0000000000029840

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值