HarmonyOS 鸿蒙Next 求助!关于taskpool问题
HarmonyOS 鸿蒙Next 求助!关于taskpool问题
可以麻烦有真机的大佬帮我测试下列demo吗(beta3 版本)。
这个demo使用taskpool绘制图形,点击按钮结束上一次绘制任务,开始新任务。我连续点击两次,在第一次绘制结束前关闭这个任务重新绘制,程序直接崩溃了。
向客服提了这个问题,他那边却不会崩溃,所以想看看大佬们会不会出现这个问题。
崩溃原因:Reason:Signal:SIGSEGV(SEGV_MAPERR)@000000000000000000 probably caused by NULL pointer dereference
import { taskpool } from ‘@kit.ArkTS’;
@Entry
@Component
struct Index {
  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  task = new taskpool.Task(Refresh);
  build() {
    Column(){
      Button(‘点击’)
        .onClick(() => {
          this.context.clearRect(0, 0, this.context.width, this.context.height);
          console.log(this.task.isDone() + ‘’)
          if (!this.task.isDone()) {
            try {
              taskpool.cancel(this.task);
            } catch (e) {
              console.error(taskpool cancle error code: ${e.code}, info: ${e.message});
            }
          }
          const offCanvas = new OffscreenCanvas(500, 500);
          this.task.arguments = [offCanvas];
          taskpool.execute(this.task).then((img) => {
            this.context.drawImage(img as PixelMap,0,0);
          })
        })
      Canvas(this.context)
    }
  }
}
@Concurrent
export async function Refresh(offCanvas:OffscreenCanvas) {
  console.log(‘开始’)
  const offContext = offCanvas.getContext(‘2d’);
  for (let i = 0; i < 100000; i++) {
    if (taskpool.Task.isCanceled()) {
      console.log(‘已取消’)
      return;
    }
    offContext.strokeRect(i, 0, 100, 100)
    offContext.strokeRect(0, i, 100, 100)
  }
  const image = offCanvas.transferToImageBitmap();
  console.log(‘结束’)
  return image;
}关于HarmonyOS 鸿蒙Next 求助!关于taskpool问题的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。
更多关于HarmonyOS 鸿蒙Next 求助!关于taskpool问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
建议参考这个:https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-cppcrash-guidance-V5
还有这个:
程序有概率在往队列中加任务的同时这个任务释放了,导致空指针了;
更多关于HarmonyOS 鸿蒙Next 求助!关于taskpool问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
感谢大佬,我明白了
日志 true-开始-false-已取消-开始
按钮点慢点不会崩溃 true-开始-结束 true-开始-结束
我也是这样的,客服说他那边不会崩溃,人麻了
希望HarmonyOS能继续推出更多实用的功能,满足用户的不同需求。
 
        
       
                   
                   
                  


