Skip to content
阅读进度

如何理解跨屏流转的状态机与取消语义? ​

返回 多屏互动项目 目录

标准回答 ​

一个可复用状态机可以包含空闲、准备目标、等待有效帧、过渡、完成和回退。每次操作分配 generation 或 sessionId,异步回调必须校验仍属于当前操作。目标可见、输入归属切换、源资源释放通常不是同一个事件。

先定义不变量:任何时刻只有一个最终状态负责释放资源;旧回调不能覆盖新会话;成功不能早于目标有效画面的就绪条件;取消后不再开放旧输入路径。超时应触发有界回退,而不是无限等待目标回调。

同一业务命令重复到达时,优先返回当前状态或复用已有操作。取消与成功并发发生时,由串行事件循环或受保护的状态转换决定唯一结果,资源清理保持幂等。这是建议的实现结构,不能据此断言既有平台采用了相同状态命名。

追问与回答 ​

旧动画结束回调为何会导致新界面消失 ​

回调没有校验操作代次,释放了当前会话仍使用的图层。将资源归属绑定到代次,清理前验证所有权。

为什么 onResume 不适合当唯一交接信号 ​

它描述生命周期,不能证明目标 Surface 已产生并呈现有效内容,应结合绘制或显示链路证据定义交接。

易混淆点 ​

  • 把延迟固定 300ms 当作所有设备的就绪判断。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。