HarmonyOS 鸿蒙Next Connectivity Kit(短距通信服务)蓝牙模块的连接和传输数据文档示例代码错误

HarmonyOS 鸿蒙Next Connectivity Kit(短距通信服务)蓝牙模块的连接和传输数据文档示例代码错误 【问题描述】:Connectivity Kit(短距通信服务)蓝牙模块的连接和传输数据文档示例代码错误,完整示例的服务端代码中的unRegisterServer()方法内,应该调用注销函数,但错误的调用成了注册函数

【问题现象】:在《连接和传输数据》的服务端完整示例GattServerManager的unRegisterServer()方法中,本意是执行清理与注销操作,但代码对特征值/描述符的读写事件(如characteristicRead等共计4处)全部错误地使用了.on进行注册,而非注销。这会导致开发者在释放资源时反而重复注册了监听器,引发严重的内存泄漏和回调多次执行问题。

cke_19286.png

【版本信息】:不涉及

【复现代码】:不涉及


更多关于HarmonyOS 鸿蒙Next Connectivity Kit(短距通信服务)蓝牙模块的连接和传输数据文档示例代码错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

问题+1,借楼跟一下

更多关于HarmonyOS 鸿蒙Next Connectivity Kit(短距通信服务)蓝牙模块的连接和传输数据文档示例代码错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


根据HarmonyOS Next官方API文档,蓝牙模块示例代码中connectDevice方法的回调参数应为BusinessError类型。传输数据时write方法的data参数需使用ArrayBuffer格式,非字符串。示例中若直接传字符串会导致类型错误。请参照最新SDK版本中的@kit.ConnectivityKit.d.ts声明文件修正参数类型。

您指出的文档错误确实存在。

在《连接和传输数据》服务端完整示例的unRegisterServer()方法中,代码本意是移除特征值/描述符的读写事件监听,但实际错误地使用了.on('characteristicRead', ...)这类注册方法。严格来说,在HarmonyOS的API中,对应的注销方法应为.off('characteristicRead', ...)

文档中4处.on应全部替换为.off。当前写法会导致每次调用unRegisterServer()时重复注册回调,造成监听器泄漏和回调意外触发。这是文档示例代码的明显Bug,开发者应自行修正。

回到顶部