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

想问一下如何实现?

HarmonyOS
15h前
浏览
收藏 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;
分享
微博
QQ
微信
回复
13h前
相关问题
HarmonyOS 查询当前最上层运行应用
180浏览 • 1回复 待解决
HarmonyOS 应用手动退到后台
69浏览 • 1回复 待解决
HarmonyOS 应用退到后台显示toast方案
791浏览 • 1回复 待解决
HarmonyOS如何退到后台时退出socket
536浏览 • 0回复 待解决
HarmonyOS 如何关闭键盘 关闭弹窗
451浏览 • 1回复 待解决
HarmonyOS 应用获取
28浏览 • 1回复 待解决