2026-07-13 MQTT 安全停止加固

变更目标

重新配对或清除配对信息时,先停止并释放旧 MQTT 客户端资源,再写入或清除本地 MQTT 配置;同时避免断开回调丢失、停止期间重启和回调异常导致服务状态不一致。

实现

验证

TDD RED 阶段,新增停止结果断言后因生产类型缺失而按预期编译失败。完成实现后执行:

JAVA_HOME=/Users/liang/Library/Java/JavaVirtualMachines/corretto-1.8.0_482/Contents/Home \
sh ./gradlew -q :app:testDebugUnitTest :app:compileDebugJavaWithJavac :app:assembleDebug --no-daemon

退出码为 0;断开、重复回调、资源释放异常与失败强制释放均有单元测试覆盖,git diff --check 通过。

设备验收建议

  1. 已连接时重新配对,确认服务与 MQTT socket 消失后才写入新配置。
  2. 断网重新配对,确认最多等待 10 秒后记录强制释放结果。
  3. 停止过程中发起普通服务启动,确认停止后服务重新初始化。
  4. 模拟启动停止服务失败,确认旧配对配置保留。