鸿蒙学习 - 页面、组件、ability 生命周期

47 阅读2分钟

鸿蒙学习 - 页面、组件、ability 生命周期

经过测试: onPageShow/onPageHide 类似于iOS的 viewWillApper,viewWillDisAppear,是在页面刚开始展示和离开的时候调用。如果是有动画的push,pop的话,是动画刚开始执行就调用了。

import router from '@ohos.router'
import hilog from '@ohos.hilog';

@Entry
@Component
struct Second {
  build() {
    Column(){
      Text("第二页").fontSize(100)
      Button("pop").onClick(() => {
        router.back({
          url: "pages/Index"
        }
        )
      })
      myCustomView()
    }
  }

  aboutToAppear() {
    hilog.debug(0x001, "xiaoming", "页面创建aboutToAppear:build函数之前执行")
  }
  aboutToDisappear() {
    hilog.debug(0x001, "xiaoming", "页面销毁aboutToDisappear")
  }

  onPageShow() {
    hilog.debug(0x001, "xiaoming", "页面展示onPageShow")
  }
  onPageHide() {
    hilog.debug(0x001, "xiaoming", "页面离开onPageHide")
  }
  onBackPress() {
    hilog.debug(0x001, "xiaoming", "返回按钮点击onBackPress==%d",12) // 也支持这个log
  }
  
}

@Component
struct myCustomView {
  build() {
    Text("测试")
  }

  aboutToAppear() {
    hilog.debug(0x001, "xiaoming", "组件创建aboutToAppear:build函数之前执行")
  }
  aboutToDisappear() {
    hilog.debug(0x001, "xiaoming", "组件销毁aboutToDisappear")
  }

}

/*
// 测试push到该页面再pop后的log为:
 06-25 11:53:29.892 23073-5888/? D 00001/xiaoming: 页面创建aboutToAppear:build函数之前执行
06-25 11:53:29.902 23073-5888/? D 00001/xiaoming: 组件创建aboutToAppear:build函数之前执行
* 
06-25 11:53:29.909 23073-5888/? D 00001/xiaoming: 页面展示onPageShow
* 
06-25 11:53:37.386 23073-5888/com.xm.hwstudy1 D 00001/xiaoming: 页面离开onPageHide
* 
06-25 11:53:37.714 23073-5888/com.xm.hwstudy1 D 00001/xiaoming: 页面销毁aboutToDisappear
06-25 11:53:37.715 23073-5888/com.xm.hwstudy1 D 00001/xiaoming: 组件销毁aboutToDisappear
 */

UIAbility 生命周期

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');
  }
}

/*
06-25 11:53:26.270 23073-5888/? I 00000/testTag: Ability onCreate
06-25 11:53:26.652 23073-5888/? I 00000/testTag: Ability onWindowStageCreate
06-25 11:53:27.084 23073-5888/? I 00000/testTag: Ability onForeground
06-25 11:53:27.215 23073-5888/? I 00000/testTag: Succeeded in loading the content. Data:
06-25 11:57:06.427 23073-5888/com.xm.hwstudy1 I 00000/testTag: Ability onBackground
 */