HarmonyOS 蓝牙发送大数据导致主线程卡死

在进行蓝牙发送数据时,调用socket.sppWrite时,会卡死

async writeData(clientNumber: number, data: Uint8Array) {
  console.info(`writeData is 向客户端写入数据}`)
  // 向客户端写入数据
  if (this.currentDevice != null && this.currentDevice.isTcpConnected) {
    ConnectTcpClient.get().send(data, (callback => {

    }))
  } else {
    console.info(`socket is sppWrite}`)
    socket.sppWrite(clientNumber, data.buffer);
  }
  let dataStr = ''
  if (data != null) {
    for (const b of data) {
      let str = b.toString(16);
      if (str != null && str.length == 1) {
        str = 0 + str; // 补0
      }
      dataStr += str
    }
  }
  console.info('发送 success data = ' + dataStr);
}
HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

根据日志所示,接口调用时间过长,超过6s没响应,页面直接freeze了。

可考虑使用系统自带的TaskPool多线程能力,将耗时任务交由子线程执行,避免主线程的长时间阻塞

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 主线程处理大数据导致卡死
397浏览 • 1回复 待解决
HarmonyOS BLE蓝牙发送数据量大的问题
243浏览 • 1回复 待解决
Worker的宿主线程必须是主线程吗?
684浏览 • 1回复 待解决
HarmonyOS主线程线程切换问题
895浏览 • 1回复 待解决
HarmonyOS 主线程刷新UI
460浏览 • 1回复 待解决
HarmonyOS native如何获取主线程
12浏览 • 1回复 待解决
HarmonyOS 其他线程切换到主线程的api
332浏览 • 1回复 待解决
TaskPool子线程主线程如何通信
2527浏览 • 1回复 待解决
HarmonyOS Worker 与主线程通信问题
179浏览 • 1回复 待解决
怎样判断当前线程是否是主线程
708浏览 • 1回复 待解决
如何判断是否为主线程
1365浏览 • 1回复 待解决