外观
设备命令超时 用户再次点击 会发生什么?
标准回答
第一次可能已经执行,只是结果未到;第二次如果重新发送,就可能重复执行。因此 UI 防连点只是第一层,SDK 与设备协议还需要请求 ID、幂等或去重规则,并明确未知结果如何查询与恢复。
**参考方案:**对“设置温度为 24 度”这样的目标状态操作,可按协议定义幂等;对“执行一次开锁”或“增加一次计数”这类动作,不能盲目重试。连接异常后先确认设备状态或查询请求结果;若协议无法保证,就对外暴露“结果未知”,而不是擅自报失败后重做。
延伸追问
如何实现业务恰好一次?通常需要客户端与服务端或设备共同的持久化、去重和确认协议。单靠 TCP、一个本地 boolean 或 UI 禁用按钮,不能普遍保证跨崩溃与断线的恰好一次执行。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q68