HarmonyOS App后台切前台,为什么先走了当前页面的onPageShow,再执行了onForeGround
在EntryAbility的onForeGround中,添加了发射事件。
this.context.eventHub.emit('onForeground');
在某个页面A的aboutToApear中注册了监听。
aboutToAppear(): void {
getContext().eventHub.on('onForeground', () => {
console.log('APP onforeground');
});
}
在A页面的onPageshow中打印了日志。
onPageShow(): void {
console.log('A onpageshow');
}
在进入A页面后,切后台再切前台,控制台先打印了'A onpageshow'然后打印了'APP onforeground'。期望是能识别出A页面的onPageShow是进入该页面或者返回该页面执行的,还是后台切前台执行的从而走不同的业务逻辑,如:
onPageShow(): void {
if (后台切前台) {
//执行业务逻辑1
} else {
//执行业务逻辑2
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS Video组件,切后台后等待一段时间再切回前台,视频无法继续播放
558浏览 • 1回复 待解决
HarmonyOS 应用先退到后台,再从后台再唤醒,获取最上层的页面名
93浏览 • 1回复 待解决
HarmonyOS 如何检测当前APP是在前台还是后台?
1346浏览 • 1回复 待解决
HarmonyOS 使用customscan自定义组件扫码时,退后台再切回前台会黑屏
30浏览 • 1回复 待解决
HarmonyOS Navigation先pop再push新页面失败
115浏览 • 1回复 待解决
HarmonyOS 如何动态获取当前页面
1087浏览 • 1回复 待解决
HarmonyOS @State数组属性跳转路由后再次回到当前页面,在onPageShow里面赋值页面不刷新
244浏览 • 1回复 待解决
HarmonyOS tabContent onPageShow 方法不生效,如何监听页面回到前台?
540浏览 • 1回复 待解决
HarmonyOS 在一个函数里如何放弃当前页面的键盘焦点
107浏览 • 1回复 待解决
HarmonyOS 如何在层级深的component中获取当前页面的localstorage.
25浏览 • 1回复 待解决
HarmonyOS 如何监听app从后台切换到前台
222浏览 • 1回复 待解决
HarmonyOS 页面如何监听页面退出后台和回到前台
74浏览 • 1回复 待解决
HarmonyOS 使用Swiper组件同时加载多个含有Web组件的页面时,除了当前页外,其余页面都无法正常加载
600浏览 • 1回复 待解决
自定义相机预览,切回后台再切换回来预览黑屏
1972浏览 • 1回复 待解决
WebView支持获取当前页面url吗?
1247浏览 • 1回复 待解决
鸿蒙注销当前页面是哪个方法?
8692浏览 • 1回复 已解决
HarmonyOS 如何先关闭键盘 再关闭弹窗
615浏览 • 1回复 待解决
HarmonyOS Navigation里面的页面不会触发onPageShow事件
236浏览 • 1回复 待解决
HarmonyOS 应用切后台以后,定时器导致app崩溃
172浏览 • 1回复 待解决
HarmonyOS 捕获异常再抛出为什么报错
190浏览 • 1回复 待解决
HarmonyOS 切后台多任务时是在什么生命周期
152浏览 • 1回复 待解决
HarmonyOS 自定义Dialog中,进行系统返回操作时,会先关闭Dialog,再次点击才会退出当前页面
536浏览 • 1回复 待解决
HarmonyOS 如何设置popup 只在当前页面展示
148浏览 • 1回复 待解决
HarmonyOS 对当前页面或应用设置模糊效果
136浏览 • 1回复 待解决
1.自定义组件的生命周期回调函数用于通知用户该自定义组件的生命周期,这些回调函数是私有的,在运行时由开发框架在特定的时间进行调用,不能从应用程序中手动调用这些回调函数。
2.onPageShow()在页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。
3.目前只有onForeground()回调和onBackground()回调可以感知前后台,可以通过在onForeground()和onBackground()中设置参数传递给@Entry页面,当onPageShow回调执行时通过参数判断来确定是否是前后台显示 可以使用AppStorage作为参数传递。
4.Foreground和Background状态分别在UIAbility实例切换至前台和切换至后台时触发,对应于onForeground()回调和onBackground()回调。
5.onForeground()回调,在UIAbility的UI可见之前,如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源。
6.onBackground()回调,在UIAbility的UI完全不可见之后,如UIAbility切换至后台时候触发。可以在onBackground()回调中释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。
7.onPageShow和onForeground是两个独立的生命周期方法,它们分别处理页面切换到前台和从后台切回前台的场景。因此,当应用从后台切到前台时,onPageShow会首先被调用,然后是onForeground。
将应用切换至前台,onPageShow()先于onForeground()调用,感知到AppStorage为false,确认当前状态,应用处于后台,onPageShow()的操作为应用进入前台。当感知到AppStorage为true时,确认当前状态,应用处于前台,onPageShow()的操作为路由过程。