I2.01.5short-wait indicator flicker设计研究

极短的加载时间内出现指示反而会制造多余的视觉闪烁

别名: 等待闪一下 · 过早进入等待态 · premature wait chrome

概念解释

骨架还是转圈,都是进入等待呈现之后的事。若这次加载在人还把动作算作「正在发生」的窗口内就结束,两种指示都不该出场。出场又立刻收掉,屏幕多一次无意义的状态闪:闪烁(flicker)。闪烁不是诚实,它把一次已经完成的操作改写成一次等待,再把等待取消。等待策略的第一刀不是选骨架还是转圈,而是这次够不够格被当成等待来呈现

组件怎么延迟转圈、出场后最少显示多久,是指示器那一组的时序。这里管的是策略:短于门槛的请求,根本不要切进等待态。

机制

人对刚发出的动作有一段仍算「同一件事」的时间。这段里屏幕可以不变,绑定还不破。一旦骨架或转圈插入,同一段钟表时间被重新编码成「我在等系统」——编码切换本身是一次状态变化。请求若在这一帧或下一帧完成,人看到的是:按下 → 等待皮 → 完成,三拍里中间那拍没有信息量,只有一次抢注意的亮灭。注意会被闪烁吸走,还会留下「系统比实际更忙」的印象,于是开始重复点、或觉得产品不稳。

门槛不是审美。本地筛选、缓存命中、已经预取好的下一页,经常落在窗口内;跨网络的冷请求经常落在窗口外。策略若「有请求就切等待态」,等于把大量本不必呈现的等待强行呈现。骨架在这里并不比转圈更无辜:整页灰块闪一帧,比一只小转圈更吵,因为改写的像素面积更大。

怎么研究

在同一操作后注入可控延迟,比较「一发出请求就进入等待呈现」和「过了门槛再进入」。关键对照是客观时间其实很短、但等待皮闪过的条件。

自变量:延迟长度、等待皮的种类(骨架 / 转圈 / 无)、操作是否已有按下态之类的即时确认。 因变量:是否报告「刚才卡了一下」、重复点击、把已完成动作记得更慢、主观不稳定。

不要把「有没有看见指示」当成功指标。短延迟里看见正是失败:人被训练去监测一次本不存在的等待。实验室被试知道自己在等加载,比产品用户更容忍闪一下;产品里闪烁会和按下态、路由转场叠在一起,要把这些即时反馈从「等待呈现」里拆干净再比。

边界

按钮没有任何按下态时,人需要别的即时确认,那是操作点的反馈,不是批准进入等待态。用户已经把这次动作建构成慢过程(导出、支付、安装),门槛可以更低,因为预期已经是等待,缺指示会被读成没点上。弱网把「通常很快」变成「经常很慢」时,固定门槛会让等待呈现经常迟到,人在门槛内开始连点;这时要配防重入,而不是把门槛降到零、让快请求重新闪。骨架准入(结构可预知)不能覆盖这条:结构再清楚,几十毫秒的请求也不该整页刷灰。

怎么落地

  • 给「进入等待呈现」设门槛。短于门槛结束的请求保持当前界面,只保留操作点上的即时态。
  • 门槛按操作类型分开:本地过滤可以更久才承认在等,冷启动的跨网请求可以更短。
  • 骨架和转圈走同一道门,不要「转圈延迟、骨架立即」。整页骨架闪一帧是更重的闪烁。
  • 验证:在快网或缓存命中下连续做常见动作,逐帧看有没有单帧等待皮。有,就把进入等待态的延迟调到刚好盖住这些快请求。

延伸

  • 同组I2.01.1 结构可预知时用骨架屏 · I2.01.2 结构不可预知时用不确定指示 · I2.01.3 骨架结构与实际内容不符会造成跳变 · I2.01.4 骨架屏比转圈更能降低用户对等待时长的主观估计 · I2.01.6 转圈缺乏进度信息,长时间使用会被误认为卡死 · I2.01.7 骨架屏的动画节奏需要统一,杂乱的呼吸动效会显得廉价
  • 相邻E6.08 加载指示器 · I1.01 即时感阈值 · I1.02 思维连续性阈值
  • 站内检索indicator flicker · deferred wait presentation · short-load flash

同组卡片

快捷操作

分享

分享当前页面

ios_share

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