#鸿蒙通关秘籍#在鸿蒙中如何使用转移模式的NativeBinding对象进行跨线程通信?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
QA风颂歌

对于转移模式的NativeBinding对象,如PixelMap,在跨线程传输时,需要重新创建JS壳来桥接C++对象,并确保调用了setTransferDetached(true)

typescript import { taskpool } from '@kit.ArkTS'; import { PixelMap } from '@kit.ImageKit'; import { loadPixelMap } from './pixelMapTest';

function loadPixelMap(rawFileDescriptor: number): Promise<PixelMap> { const imageSource = image.createImageSource(rawFileDescriptor); const pixelMap = imageSource.createPixelMapSync(); imageSource.release(); pixelMap.setTransferDetached(true); return pixelMap; }

let pixelMapTask: taskpool.Task = new taskpool.Task(loadPixelMap, rawFileDescriptor); taskpool.execute(pixelMapTask).then(pixelMap => { // 使用传回的PixelMap对象 console.log("PixelMap received.") });

分享
微博
QQ
微信
回复
2天前
相关问题
TaskPool如何跟主线程进行通信
537浏览 • 1回复 待解决