HarmonyOS 应用先退到后台,再从后台再唤醒,获取最上层的页面名

如标题所述,当应用在某页面退到后台,再次从后台唤醒后,想知道应用当前显示页面的页面名以及页面历史栈的数量。

尝试了window生命周期回调方式,但RESUMED未触发,,如果放在ACTIVE,直接用router会崩溃提示未初始化。

windowStage.on('windowStageEvent', (data) => {
  let stageEventType: window.WindowStageEventType = data;
  switch (stageEventType) {
    case window.WindowStageEventType.SHOWN: // 切到前台
      Log.d(TAG,'windowStage foreground.');
      break;
    case window.WindowStageEventType.ACTIVE: // 获焦状态
      Log.d(TAG,'windowStage active.');
      break;
    case window.WindowStageEventType.RESUMED:
      Log.d(TAG,'windowStage resumed.');
      Log.d(TAG, `pageSize: ${router.getLength()}`)
      break;
    case window.WindowStageEventType.PAUSED:
      Log.d(TAG,'windowStage paused.');
      break;
    case window.WindowStageEventType.INACTIVE: // 失焦状态
      Log.d(TAG,'windowStage inactive.');
      break;
    case window.WindowStageEventType.HIDDEN: // 切到后台
      Log.d(TAG,'windowStage background.');
      break;
    default:
      break;
  }
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

想问一下如何实现?

HarmonyOS
2024-12-26 15:57:20
501浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
shlp

可以使用navigation的路由跳转,使用AppStorage set路由站信息,在 ACTIVE来使用EntryAbility:

case window.WindowStageEventType.ACTIVE: // 获焦状态
let pageInfos: NavPathStack | undefined = AppStorage.get('pageInfos')
console.log(`${pageInfos?.size()}`)
console.log("windowStage active")
break;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
分享
微博
QQ
微信
回复
2024-12-26 18:14:49


相关问题
HarmonyOS 查询当前最上层运行应用
971浏览 • 1回复 待解决
HarmonyOS 应用手动退到后台
856浏览 • 1回复 待解决
HarmonyOS 退到后台监听
503浏览 • 1回复 待解决
HarmonyOS 应用退到后台显示toast方案
1563浏览 • 1回复 待解决
HarmonyOS如何退到后台时退出socket
1246浏览 • 0回复 待解决
HarmonyOS Navigationpoppush新页面失败
594浏览 • 1回复 待解决