相关问题
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中通过router跳转并传递复杂对象?
75浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中实现ArrayBuffer对象的拷贝传输?
50浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何跨线程传递鸿蒙系统中的PixelMap对象?
45浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙系统中如何在页面跳转时传递数据?
51浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中利用Navigation实现对象传递?
81浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中实现页面跳转时传递类对象?
124浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙中如何使用转移模式的NativeBinding对象进行跨线程通信?
46浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙中如何实现普通对象的跨线程传递?
39浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中通过Native C/C++创建子进程?
29浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中获取Context对象?
41浏览 • 2回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中通过C/C++实现数据持久化?
62浏览 • 1回复 待解决
如何在鸿蒙系统中实现基于 Intent 的数据传递?
175浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中利用Navigation组件传递参数?
141浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS项目中使用class-transformer进行对象传递?
61浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在页面跳转时传递参数?
66浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中声明共享模块?
101浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在页面跳转时传递参数
69浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何通过Callback方式获取扫码结果?
92浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT应用中使用窗口焦点转移来保证系统侧滑返回事件正常工作?
35浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何在不同线程中操作鸿蒙共享模块中的对象?
103浏览 • 1回复 待解决
#鸿蒙通关秘籍# 在HarmonyOS中如何通过子窗口方式创建和展示弹窗?
43浏览 • 0回复 待解决
#鸿蒙通关秘籍#鸿蒙开发中如何通过用户首选项监听数据对象的变化?
43浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中实现页面返回操作?
60浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中嵌套使用Grid组件?
54浏览 • 1回复 待解决
在鸿蒙系统中,默认通过转移的方式传递ArrayBuffer对象。转移方式可以提高性能,传递后原线程无法使用传输到子线程的ArrayBuffer。在代码中通过传递
true
至createImageTask
函数中的第二个参数来确认传递方式为转移即可。typescript // Index.ets import { taskpool } from '@kit.ArkTS'; import { BusinessError } from '@kit.BasicServicesKit';
@Concurrent function adjustImageValue(arrayBuffer: ArrayBuffer): ArrayBuffer { return arrayBuffer; }
function createImageTask(arrayBuffer: ArrayBuffer, isParamsByTransfer: boolean): taskpool.Task { let task: taskpool.Task = new taskpool.Task(adjustImageValue, arrayBuffer); return task; }
@Entry @Component struct Index { @State message: string = 'Hello World';
build() { RelativeContainer() { Text(this.message) .id('HelloWorld') .fontSize(50) .fontWeight(FontWeight.Bold) .alignRules({ center: { anchor: 'container', align: VerticalAlign.Center }, middle: { anchor: 'container', align: HorizontalAlign.Center } }) .onClick(() => { let taskNum = 4; let arrayBuffer = new ArrayBuffer(1024 * 1024); let taskPoolGroup = new taskpool.TaskGroup(); for (let i: number = 0; i < taskNum; i++) { let arrayBufferSlice: ArrayBuffer = arrayBuffer.slice(arrayBuffer.byteLength / taskNum * i, arrayBuffer.byteLength / taskNum * (i + 1)); taskPoolGroup.addTask(createImageTask(arrayBufferSlice, true)); } taskpool.execute(taskPoolGroup).then((data) => {}).catch((e: BusinessError) => { console.error(e.message); }) }) } .height('100%') .width('100%') } }