HarmonyOS 鸿蒙Next:如何在方法体内打开新的页面并同步返回结果

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:如何在方法体内打开新的页面并同步返回结果

Webview页面中,有个功能:前端调用原生的方法并返回结果,这个结果需要跳转页面去获取,现在的疑问是:跳转到另一个页面后,结果如何在前面原生方法体内回调给前端,或者使用别的什么方法?我原来的想法是,前端调用原生方法时,传过来一个 JsCallBack,这个保存下来,当跳转到另一个页面拿到结果后关闭页面时回调给Webview页面,在webview页面拿到前面的JsCallBack再回调结果。或者还有什么方法可以实现的?


更多关于HarmonyOS 鸿蒙Next:如何在方法体内打开新的页面并同步返回结果的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复
找到方法了,目前使用
NavPathStack.pop回调

更多关于HarmonyOS 鸿蒙Next:如何在方法体内打开新的页面并同步返回结果的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


参考一楼回复。

不知道鸿蒙有没有像Android startActivityForResult这样的方法,将结果回调给onAcitvityResult

我记得是没有的,不过应该可以用localStorage来替代处理

在HarmonyOS鸿蒙Next系统中,若想在方法体内打开新的页面并同步返回结果,通常需要使用系统提供的页面跳转和结果回调机制。由于鸿蒙系统基于事件驱动和异步通信模型,直接同步返回结果并不符合其设计原则。不过,你可以通过以下方式模拟这一需求:

  1. 使用Intent启动新页面:通过Intent携带必要参数启动目标页面。

  2. 设置结果回调:在新页面中处理完逻辑后,通过setResult方法设置返回结果,并调用finish方法结束页面。

  3. 在启动页面接收结果:启动页面需要重写onActivityResult方法,该方法会在新页面结束时被调用,并接收返回结果。

  4. 使用同步工具:虽然不推荐,但如果你确实需要同步等待结果,可以考虑使用CountDownLatch等同步工具,在新页面返回结果时通知等待线程。然而,这种做法违背了鸿蒙系统的异步设计理念,可能导致应用性能下降或界面卡顿。

综上所述,建议遵循鸿蒙系统的异步通信原则,通过回调机制处理页面间结果传递。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部