HarmonyOS 鸿蒙Next Entry修饰的Component生命周期onPageHide未调用

HarmonyOS 鸿蒙Next Entry修饰的Component生命周期onPageHide未调用

Splash代码如下

import router from '@ohos.router'

@Component
struct Splash {
  timeoutId: number = 0;

  build() {
    Flex({
      direction: FlexDirection.Column,
      alignItems: ItemAlign.Center,
    }) {
      Image($r('app.media.splash_up'))
        .objectFit(ImageFit.Contain)
        .height('80%')
      Image($r('app.media.splash_bottom'))
        .objectFit(ImageFit.Contain)
        .height('20%')
        .onClick(() => {
          router.replaceUrl({
            url: "pages/Index"
          })
        })
    }
    .width('100%')
    .height('100%')
  }

  onPageShow() {
    console.log(`onPageShow`);
    this.timeoutId = setInterval(() => {
      console.log(`onPage...???`);
      router.replaceUrl({
        url: 'pages/Index'
      })
    }, 2000)
  }

  onPageHide() {
    console.log(`${this.timeoutId}`);
    console.log(`onPageHide`);
  }
}

查看日志发现没有onPageHide,有没有解决方案?生命周期还是挺重要的,我解决是把setInterval换成setTimeout方法。。。


更多关于HarmonyOS 鸿蒙Next Entry修饰的Component生命周期onPageHide未调用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

换成 aboutToAppear 和 aboutToDisappear 这个

更多关于HarmonyOS 鸿蒙Next Entry修饰的Component生命周期onPageHide未调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


已经工单反馈了,回复用这两个,在NEXT版本修复。

DEV官方splashscreenpage工程也存在这类问题

在HarmonyOS中,@Entry修饰的Component表示应用的入口组件。onPageHide是组件生命周期回调之一,通常在页面隐藏时触发。如果onPageHide未调用,可能由以下原因导致:

  1. 页面未正确隐藏:确保页面确实被隐藏,而不是被销毁或未切换到后台。
  2. 生命周期回调未注册:确认在组件中正确实现了onPageHide方法。
  3. 系统或框架问题:某些情况下,系统或框架的特定状态可能导致回调未触发。
  4. 组件层级问题:如果组件嵌套层级较深,可能影响生命周期回调的执行。

检查代码实现和页面状态,确保onPageHide被正确注册和执行。

回到顶部