目录

使用扩展的Node-API接口创建对ArkTS对象的Sendable强引用

HarmonyOS的API提供进程内跨ArkTS线程共享的强引用能力。相较于napi_ref,napi_sendable_ref支持跨ArkTS线程操作,但同时也存在一些限制。

场景介绍

开发者可使用napi_create_strong_sendable_reference接口创建指向Sendable ArkTS对象的Sendable强引用,使用napi_get_strong_sendable_reference_value获取被引用的ArkTS对象,使用napi_delete_strong_sendable_reference删除Sendable强引用。这些操作既可以在同一ArkTS线程进行,也可在不同ArkTS线程进行。

Sendable强引用对象关联接口

接口 描述
napi_create_strong_sendable_reference 创建指向Sendable ArkTS对象的Sendable强引用。
napi_delete_strong_sendable_reference 删除Sendable强引用。
napi_get_strong_sendable_reference_value 根据Sendable强引用获取其关联的ArkTS对象值。

示例代码

注意事项

  1. 只能为Sendable对象创建napi_sendable_ref。
  2. napi_sendable_ref可跨ArkTS线程使用,在多线程操作时,调用者需自己保证释放时机,防止出现释放后使用的问题。
  3. 同一进程内,同时存活的napi_sendable_ref最大数量为51200个。
  4. napi_sendable_ref与其他引用的类型不同,因此不可将napi_ref、napi_strong_ref等其他引用强转成napi_sendable_ref。napi_delete_strong_sendable_reference和napi_get_strong_sendable_reference_value接口仅允许接收由napi_create_strong_sendable_reference创建的napi_sendable_ref。
  5. 在使用napi_create_strong_sendable_reference、napi_get_strong_sendable_reference_value和napi_delete_strong_sendable_reference接口时,调用者需要保证传入的env参数是当前调用接口的ArkTS线程环境对象,避免将其他ArkTS线程的env作为参数传入导致出现多线程安全问题。