鸿蒙学习 - 页面、组件、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
*/