HarmonyOS 鸿蒙Next 不同入口进入MainAbility- PageAbility会被重复实例,即建立新任务,覆盖之前的PageAbility?

HarmonyOS 鸿蒙Next 不同入口进入MainAbility- PageAbility会被重复实例,即建立新任务,覆盖之前的PageAbility? 不同入口进入MainAbility- PageAbility会被重复实例,即建立新任务,覆盖之前的PageAbility?

发生几率:
偶发

场景:
应用开发,应用图标进入和卡片路由进入同一个PageAbility

问题阐述:
如题,被覆盖掉的PageAbility无法再回到前台,无论哪个入口进入再展现到前台的是最新创建的哪个PageAbility,之前的被压在了内存中,而且没有被销毁。根据捕捉页面的生面周期去打印阶段日志来看,每一个被覆盖掉的PageAbility没有被销毁。无论是java PageAbility还是js 的PageAbility。

疑问:
怎样保证不同入口进入的是同一个被实例PageAbility,后面的不会重复实例,这种情况是偶发性的,出现几率大于不出现的几率,经过测试,当反复从同一入口进入多次,然后再多次回到Home,这个PageAbility处于稳定状态后,之后从其他入口再进入PageAbility就不会被重新覆盖。为什么会这样???


更多关于HarmonyOS 鸿蒙Next 不同入口进入MainAbility- PageAbility会被重复实例,即建立新任务,覆盖之前的PageAbility?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

目前鸿蒙只支持两种启动模式,叫launchType标签,该标签标识ability的启动模式,标签值可选 “singleton”、” singleMission”以及“standard”,standard表示此ability可以有多实例,singleMission表示此ability在单个任务栈里单实例,singleton表示此ability在所有任务栈里单实例。该标签可缺省,缺省值为standard 。如果formEnabled为true,则ability启动模式的标签值只支持singleton。如果要想只有一个Ability实例在内存中可以将launchType标签设置为:singleton。

如果还是不能解决您的问题,请提供详细的测试日志和ability的堆栈信息。

更多关于HarmonyOS 鸿蒙Next 不同入口进入MainAbility- PageAbility会被重复实例,即建立新任务,覆盖之前的PageAbility?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


单例模式每次都会销毁前面的实例,这个没问题。但是用js构建的UI调用的接口有的属于后台运行接口,例如音频播放接口,他不会随着实例的销毁而停止,会继续播放。除非停止进程。这种情况有什么处理办法吗?

第二个问题请教下版主,现在版本有没有方法让js卡片的事件外部调用js构建页面的接口,就是卡片的点击事件能穿透到app.js里,

问题1:可以尝试在page的生命周期方法onDestory()里面停止视频播放。
问题2:目前没有方法能穿透到app.js。

第一次启动应用,然后返回键退出应用一次,后续因该就不会出现楼主所说的问题了

直接home退到桌面和返回键逐层退到home,对当前PageAbility有什么区别?

launchType改成singleton不行吗

不行,已经试过,

欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS鸿蒙系统中,当通过不同入口进入MainAbility时,如果PageAbility被重复实例化并建立新任务,这通常是由于Ability的启动模式或任务管理策略配置不当导致的。

HarmonyOS中的Ability启动模式包括singleton、singleTop、multiple等,类似于Android中的Activity启动模式。如果PageAbility被配置为multiple模式,则每次启动都会创建一个新的实例。而如果期望避免这种情况,可以考虑将PageAbility的启动模式设置为singleton或singleTop。

此外,任务管理策略也可能影响Ability的实例化行为。例如,如果系统或应用配置为每次启动Ability都创建新任务,则会导致PageAbility被重复实例化在新任务中。检查应用的配置文件或代码中的任务管理逻辑,确保符合预期的启动和任务管理行为。

如果已正确配置启动模式和任务管理策略,但问题依旧存在,可能是由于系统bug或特定场景下的异常行为。此时,建议详细记录复现步骤和相关信息,通过官方渠道提交给鸿蒙开发者支持团队进行排查。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部