外观
设备控制为什么要区分“已发送”和“已完成”?
标准回答
一次控制会经过提交、受理、执行和反馈。每一步都可能失败或超时。客户端要展示真实阶段,并根据设备反馈更新状态,避免刚发送就显示成功。
- 为命令分配 ID、目标状态、截止时间和状态机,记录失败原因。
- 设置目标值通常比增减命令更容易做幂等,但仍要核对设备协议。
- 重连后先查询实际状态;取消请求是否能停止设备动作也必须有明确约定。
通俗例子
用户设置温度 22℃,页面先显示“设置中”。车辆服务接受请求后仍等待属性反馈;读到有效的 22℃ 才确认成功。若超时后反馈又来了,要按命令版本处理,避免旧回包覆盖新的 24℃ 请求。
深入解释
**至少区分哪些状态:**客户端已发送、服务已受理、设备正在执行、设备已完成或失败,是不同阶段。界面按阶段反馈,才能让用户知道是在等网络还是等设备动作。
**新旧结果怎样对应:**命令带 ID 或版本,反馈关联到具体请求。先设置 22℃ 又设置 24℃,迟到的 22℃ 回包不能随意覆盖新目标;真实设备状态也应单独保留。
易混淆点
网络 ACK、接口返回成功、物理动作完成可能是三件不同的事。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
job-V05