HarmonyOS 从C++层触发通知到ArkTS层

实现了自研的har包,底层使用C++实现,上层也有ArkTS的实现。

当C触发arkTs的方法时,需要在C层缓存了napi_env,,然后通过异步任务 napi_create_async_work,napi_queue_async_work 将C的事件放到arkTs的线程中执行。同时C缓存了上层设置的回调对象,在异步任务的线程中,通过napi_get_named_property,napi_call_function 执行arkTs的方法。实现方法和这篇文章类似: https://blog.csdn.net/licui1000/article/details/134729566

Q:

  1. 上面的方法是否可行?
  2. C++层缓存的 napi_env 有可能失效吗,会进一步导致崩溃吗?
HarmonyOS
2024-12-19 17:07:12
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

1.上面方法可行。

2.不会:因存储的是主线的env。备注:主线程的env,存储起来,没有问题,也能够在后续的调用中使用,但是,不能跨线程使用,跨线程使用会崩溃。其他线程的env不要缓存,如taskpool创建的线程在线程运行结束后,就会销毁,此时,存储的env不能再使用,使用会崩溃。

分享
微博
QQ
微信
回复
2024-12-19 18:44:51
相关问题
ArkTS通过接口访问C++对象
806浏览 • 1回复 待解决
c/c++主动调用ArkTS存在问题
1099浏览 • 1回复 待解决
HarmonyOS ETS和c++通信
479浏览 • 1回复 待解决
ts给c++传递数组,c++如何解析
2256浏览 • 1回复 待解决
通过Native 调用c++实现文本绘制
1501浏览 • 1回复 待解决
HarmonyOS C++自定义组件如何开发?
757浏览 • 1回复 待解决
HarmonyOS C++ 调用 ets 函数报错闪退
513浏览 • 1回复 待解决
HarmonyOS C++如何同步调用JS函数 -
395浏览 • 0回复 待解决