如何在Ability内替换Slice,防止返回键返回上一个Slice?

如题,如果直接 addActionRoute 用 Intent跳转,用过的Slice不会销毁,按返回键还会退回上一个Slice。如何避免这样的情况发生,使Ability内始终只有一个Slice?

延迟用terminate销毁历史,会有退出动画一闪而过,效果不太好。

Ability
Slice
鸿蒙
2022-07-19 16:09:04
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Raoeym
3

系统为每个Page维护了一个AbilitySlice实例的栈,每个进入前台的AbilitySlice实例均会入栈。当开发者在调用present()或presentForResult()时指定的AbilitySlice实例已经在栈中存在时,则栈中位于此实例之上的AbilitySlice均会出栈并终止其生命周期。但如果导航时指定的AbilitySlice实例均是新建的,则新的AbilitySlice实例会入栈。同样的,点击返回按钮就是将当前栈顶的AbilitySlice出栈。

综上:楼主可以尝试使用单例AbilitySlice实例进行跳转。

参考链接:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-switching-0000000000037999

分享
微博
QQ
微信
回复
2022-07-19 17:03:53
相关问题
怎么返回上一个ets 文件?
49浏览 • 1回复 待解决
HarmonyOS 如何返回一个颜色?
190浏览 • 1回复 待解决
CustomDialogController禁用返回
232浏览 • 1回复 待解决
如何屏蔽系统的返回
335浏览 • 1回复 待解决
PageAbility配合多个Slice实现页面间切换
13776浏览 • 4回复 已解决
是否能定义一个返回的组件?
158浏览 • 1回复 待解决
HarmonyOS page中如何获取返回事件?
281浏览 • 1回复 待解决