HarmonyOS 鸿蒙Next XComponent示例中 OnSurfaceCreatedCB 保存下 window 在其他线程中使用 创建 Surface 失败

HarmonyOS 鸿蒙Next XComponent示例中 OnSurfaceCreatedCB 保存下 window 在其他线程中使用 创建 Surface 失败 XComponent示例中,OnSurfaceCreatedCB保存下window,在其他线程中使用,创建Surface失败。

在我们业务中,window需要转到其他模块中使用,且是在其他线程,有什么办法正确使用。或者调用什么接口将OpenGL的调用转回到主线程调用?

使用napi_create_async_work可以解决问题吗?有什么注意事项?

XComponent上显示视频有什么推荐用法吗?

2 回复
您好,可以使用napi_create_async_work创建一个异步工作对象,来在后台线程执行某些任务,并在完成时通知主线程。
注意:确保你正确地使用了异步API,并且在完成后正确地通知主线程。
XComponent上显示视频可以参考:
https://gitee.com/openharmony-sig/ohos_ijkplayer

***

- 以上是初步分析结论,如有疑问可以展开回复,看到后会继续协助定位阻碍点。
- 开源网站上收录了UI、系统接口、Web、创新特性等场景化鸿蒙示例DEMO,开发中可以参考:
  https://gitee.com/scenario-samples/demo-index

更多关于HarmonyOS 鸿蒙Next XComponent示例中 OnSurfaceCreatedCB 保存下 window 在其他线程中使用 创建 Surface 失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next XComponent示例中,OnSurfaceCreatedCB回调函数用于在Surface创建时执行相关操作。如果在其他线程中使用保存的window对象创建Surface失败,可能是由于以下原因:

  1. 线程安全:window对象可能不是线程安全的,跨线程操作可能导致资源竞争或状态不一致。
  2. 上下文丢失:在跨线程使用window对象时,相关上下文可能已丢失或无效,导致无法正确创建Surface。
  3. 生命周期问题:window对象可能在回调后被销毁或释放,导致在其他线程中使用时无效。

确保在回调函数中正确保存window对象,并在同一线程或确保线程安全的情况下使用。

回到顶部