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
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

1.上面方法可行。

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

分享
微博
QQ
微信
回复
1天前
相关问题
ArkTS通过接口访问C++对象
370浏览 • 1回复 待解决
c/c++主动调用ArkTS存在问题
359浏览 • 1回复 待解决
ts给c++传递数组,c++如何解析
1902浏览 • 1回复 待解决
HarmonyOS C++自定义组件如何开发?
322浏览 • 1回复 待解决
通过Native 调用c++实现文本绘制
1027浏览 • 1回复 待解决