E6.08.2minimum indicator duration设计
指示器出现后需有最短显示时长防闪烁
别名: 最短转圈 · spinner min time · 防闪烁
概念解释
指示器一旦越过出场门槛真正出现,就不能在下一帧立刻收掉。最短显示时长保证转圈作为一次可被知觉的事件完整发生,而不是一次闪光。它和「极短加载不要出场」是一对互补规则:没出场的不要硬出;已经出场的不要闪完就撤。没有最短时长,门槛只是把闪光从「请求一开始」挪到了「门槛刚过」,闪光还在。
机制
知觉一个新物体需要它在视野里稳定停留。转圈刚画出来请求就结束,物体的出现和消失叠在同一眼动里,人只登记到「有东西闪了一下」,登记不到「系统工作过」。更糟的是闪光发生在内容即将替换的那一帧附近,指示器和内容互相抢同一块注意,像一次故障。最短时长把「工作中」做成一段可读取的状态,然后再切到结果。它会让某些已经结束的请求在表面上多等一小会儿——这是刻意的:那一小会儿买的是状态可读,不是真的还在计算。若有人把这段多余时间当成性能问题去「优化掉」,闪烁会回到门槛边缘。
边界
最短时长不能长到让人觉得在故意拖。它覆盖的是知觉稳定,不是假装忙碌。连续多个短请求若各自套最短时长,指示器会粘住不放,应改为共享一次显示,在最后一个结束后再走最短时长的收尾。确定进度已经在动的条,不需要再套转圈的最短时长,进度本身就是可读取状态。无障碍的实时区域若把每次显隐都播报,最短时长减少了播报次数,这是副作用里好的一面;但若最短时长把已失败的请求还显示成加载,播报就会说错,失败态应能打断最短时长。
怎么落地
- 指示器真正插入画面后,启动一段最短可见时间,到期且请求已结束才移除。
- 把出场延迟和最短时长写成一对,而不是只做其中一项;只做门槛,闪光会挤在门槛之后。
- 同一区域的连续请求共用一个指示器实例,不要每个都完整走一遍最短时长。
- 验证:把请求耗时调到刚好超过出场延迟一点点,看转圈是完整转了一圈还是闪了一帧。闪了,最短时长就没接上。