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

【版本信息】:不涉及
【复现代码】:不涉及
更多关于HarmonyOS鸿蒙Next优化建议-Connectivity Kit(短距通信服务)蓝牙模块的连接和传输数据文档示例代码错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题+1,借楼跟一下
更多关于HarmonyOS鸿蒙Next优化建议-Connectivity Kit(短距通信服务)蓝牙模块的连接和传输数据文档示例代码错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS鸿蒙Next中Connectivity Kit蓝牙模块的示例代码错误,文档示例中可能存在API调用参数类型不匹配或回调函数未正确实现。建议直接在华为开发者官网查阅最新的API参考文档或SDK更新日志,参考官方提供的标准代码片段进行修正。
服务端完整示例代码GattServerManager类的unRegisterServer()方法,存在明显错误。
该方法的设计意图是执行资源清理与反注册操作。但在具体实现中,characteristicRead、characteristicWrite、descriptorRead、descriptorWrite四个事件的处理,均错误地使用了.on()方法。在HarmonyOS的API中,.on()用于注册事件监听,而.off()才是用于注销监听。您附件图片中展示的代码,正是这四处.on()调用。
这导致开发者调用unRegisterServer()释放资源时,不仅未能正确移除监听器,反而反复执行了.on()注册操作。这会引发两个直接后果:
- 内存泄漏:已销毁或不再使用的服务端对象仍被事件监听器持有引用,无法被垃圾回收。
- 回调重复执行:若后续再次注册相同监听,每次数据事件都会触发多个回调函数,破坏程序逻辑。
该错误属于典型的API误用,应尽快修正。正确的实现是将unRegisterServer()方法内相关的.on()调用全部替换为对应的.off()调用,以确保与注册过程对称,完成资源的完全释放。

