赞
踩
在开始之前,我们先明确自定义组件和页面的关系:
1.自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用,可以调用组件的生命周期。
2.页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。
页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:
组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:
生命周期流程如下图所示,下图展示的是被@Entry装饰的组件(首页)生命周期。
提示1:页面销毁生命周期,测试体现不出来,是监测不到的,在日志中查看不到被销毁事件的执行
提示2:aboutToApper和aboutToDisapper声明周期可以在@Entry页面组件内使用
提示3:页面组件的生命周期是不能在自定义组件@Component中使用的
概述
当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,或者UIAbility实例发生了前后台的状态切换。
UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示。
Ability创建时回调,执行初始化业务逻辑操作。
Ability生命周期回调,在销毁时回调,执行资源清理等操作。
当WindowStage创建后调用。
当WindowStage销毁后调用。
Ability生命周期回调,当应用从后台转到前台时触发。
Ability生命周期回调,当应用从前台转到后台时触发
可以在entrt-src-main-ets-ability文件中查看代码
- import UIAbility from '@ohos.app.ability.UIAbility';
- import hilog from '@ohos.hilog';
- import window from '@ohos.window';
-
- export default class EntryAbility extends UIAbility {
- onCreate(want, launchParam) {
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
- }
-
- onDestroy() {
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
- }
-
- onWindowStageCreate(windowStage: window.WindowStage) {
- // Main window is created, set main page for this ability
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
-
- windowStage.loadContent('pages/Index', (err, data) => {
- if (err.code) {
- hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
- return;
- }
- hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
- });
- }
-
- onWindowStageDestroy() {
- // Main window is destroyed, release UI related resources
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
- }
-
- onForeground() {
- // Ability has brought to foreground
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
- }
-
- onBackground() {
- // Ability has back to background
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
- }
- }

提示:Ability生命周期使用hilog去打印一些日志
详细的Ability可以去看官方文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。