I2.02.2stall needs stage设计

长时间停滞需说明当前阶段

别名: 进度停滞说明 · 阶段文案 · hung progress explanation

概念解释

条还在、数字不涨,人看到的是停滞(stall)。停滞不等于失败,但看起来很像失败。可预期要求在停滞拖过「还能用惯性相信它在动」的那一小段之后,用当前阶段把沉默填上:正在校验、正在等服务器排队、正在写磁盘。阶段说明的是「工作改换了形态,所以条暂时不走」,不是编一个仍在涨的百分比。

机制

确定进度把「还在做」绑在位移上。位移一停,那条绑定断了,人只剩下两种解释:卡住了,或进入了一种界面读不出的工作。短暂停一下,惯性还能撑——网络抖动、缓冲区在填。拖过惯性,解释权被「坏了」抢走。阶段文案把解释权夺回来:它提供一个不依赖位移的新证据,证明过程还在状态机里,只是当前这个状态没有可数的分子可加。

阶段还必须是真的阶段,不是安慰。反复把同一句「处理中」刷新,信息量仍是零,和没写一样。有用的阶段会改变:从「上传」到「服务器扫描」到「生成预览」,每换一次,人就能重新校准「条为什么停」。校准的是模型,不是速度——速度可以仍是零,模型不能是空的。

边界

停顿短于思维还能连续的窗口,加阶段会变成闪烁的字幕,比沉默更吵。步骤很少、每一步都有可见的界面切换(向导页)时,页面本身就是阶段,不必在条旁再叠一句同义反复。阶段若来自猜(其实不知道卡在哪),假阶段比没阶段更糟,因为下一秒会被证伪;宁可说「仍在工作,这一步耗时不稳定」,也不要轮播假工序。主线程冻住导致条和文案一起停,阶段也救不了,得把状态放到还能刷新的层。倒退被禁止之后,停滞会更常见(总量变大时条停住),所以这条和单调进度是配套:不许回跳,就必须会说话。

怎么落地

  • 给进度设停滞计时。超过该时长仍无分子增加,显示当前阶段,而不是让条继续装活。
  • 阶段用可切换的真实工序名,并在工序切换时更新;不要用永不改变的「请稍候」。
  • 停滞期间保持取消或切走的能力,阶段不是把人钉在屏幕上的理由。
  • 验证:人为插入一段十秒以上、百分比不动的服务器排队。界面应出现与排队对应的阶段。若只有一条冻住的条,可预期已经断了。

延伸

  • 同组I2.02.1 进度需单调且不倒退 · I2.02.3 剩余时间估计不准会损害信任
  • 相邻I2.01 骨架屏与转圈的选用 · I1.03 注意力保持上限 · I3.07 后台任务
  • 站内检索progress stall · stage explanation · determinate hang

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/I2.02.2