HarmonyOS鸿蒙Next中在一个固定场景中,离开页面对应的onPageHide生命周期没有被执行。

HarmonyOS鸿蒙Next中在一个固定场景中,离开页面对应的onPageHide生命周期没有被执行。

问题描述: 初次点击服务卡片使用postCardAction打开后台页面场景中(此时应用在后台执行且没有被杀死),应用会先打开上次使用的页面并执行上次页面的onPageShow生命周期,然后再跳转到卡片指定的页面。出现的问题:跳转指定页面后没有执行上个页面的onPageHide生命周期回调函数。导致一些状态没有被清理掉。

代码

我在跳转之前的页面两个生命周期函数里面处理全屏内容,进入全屏离开取消全屏。

  onPageShow(): void {
    window.getLastWindow(getContext(this)).then((lastWindow) => {
      lastWindow.setWindowLayoutFullScreen(true);
    })
  }
  onPageHide(): void {
    window.getLastWindow(getContext(this)).then((lastWindow) => {
      lastWindow.setWindowLayoutFullScreen(false);
    })
  }

测试中,我在上次使用的页面onPageShow和onPageHide函数分别打了断点。只进入了onPageShow然后就跳转指定页面成功后没有执行onPageHide函数。

结果:导致指定页面全屏展示

![cke_48057.png](data-originheight=“854” data-originwidth=“401” src="https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/337/277/113/2850086000337277113.20241123180741.93891000797498215809300288104588:50001231000000:2800:2D4FA0636B4FD183A9EDAB0AAE598CAFB9186E36871D4B25D4A9969DF53E67F3.png)


更多关于HarmonyOS鸿蒙Next中在一个固定场景中,离开页面对应的onPageHide生命周期没有被执行。的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

提供下复现问题的代码呢?

更多关于HarmonyOS鸿蒙Next中在一个固定场景中,离开页面对应的onPageHide生命周期没有被执行。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,onPageHide生命周期函数用于在页面离开时执行相关操作。如果在固定场景中,离开页面时onPageHide没有被执行,可能的原因包括:

  1. 页面栈管理问题:如果页面没有从页面栈中移除,onPageHide可能不会被触发。确保页面正确地从页面栈中弹出。

  2. 生命周期回调覆盖:检查是否有其他生命周期回调函数(如onBackPress)覆盖了onPageHide的执行逻辑。

  3. 页面状态未更新:如果页面状态未正确更新,可能会导致onPageHide未被调用。确保页面状态管理逻辑正确。

  4. 系统或框架问题:在特定版本或设备上,可能存在系统或框架层面的问题,导致onPageHide未被触发。可以检查是否有相关已知问题或更新日志。

  5. 异步操作影响:如果页面离开时有未完成的异步操作,可能会影响onPageHide的执行。确保异步操作在页面离开前完成或正确处理。

  6. 自定义路由逻辑:如果使用了自定义路由逻辑,可能会影响页面生命周期的正常调用。检查自定义路由逻辑是否与页面生命周期管理冲突。

总结:onPageHide未执行可能涉及页面栈管理、生命周期回调覆盖、页面状态更新、系统或框架问题、异步操作影响或自定义路由逻辑。需要逐一排查这些可能的原因。

在HarmonyOS鸿蒙Next中,onPageHide生命周期函数可能未触发的原因可能是页面未真正隐藏,或者页面切换的方式未触发该生命周期。建议检查以下几点:

  1. 页面切换方式:确认是否通过router.push或其他方式切换到新页面,确保页面确实被隐藏。
  2. 页面栈管理:检查页面栈是否正常管理,确保旧页面被正确移除。
  3. 生命周期逻辑:确保onPageHide函数已正确定义,且未被其他逻辑覆盖。
  4. 调试日志:添加日志输出,确认其他生命周期函数(如onPageShow)是否正常触发。

如果问题仍存在,建议提供更多上下文信息以便进一步排查。

回到顶部