窗口状态需在重启后恢复
别名: 会话恢复 · 窗口记忆 · session restore · window geometry
概念解释
关掉应用不是把桌子掀了。人第二天坐回来,窗口应回到离开时的几何与内容状态:所在显示器、位置、尺寸、最大化或分栏、打开的文档、滚动位置、未提交的输入。窗口状态恢复是桌面工作记忆的外置:空间安排本身就是人用来找回任务的线索。
恢复的是「我当时怎么摆的」,不是「给我一个默认欢迎屏」。新会话从空白布局开始,等于每次都要重新布置工位。
机制
桌面把任务摊在空间里。多窗口、多显示器上的位置被当成外部记忆:左屏是参考,右屏是正在写的稿,底部那条是日志。Robertson、Czerwinski 等人在大屏幕与任务画廊一类工作里反复看到,人靠窗口的空间布局回忆「我做到哪了」。进程被杀掉之后,这些坐标若清零,空间记忆对不上实物,找回任务的成本接近重新开始。
要持久化的不只是 x、y、宽、高。最大化标记、所在屏、分栏比例、文档标识、插入点或滚动偏移,缺一项就会「尺寸对了但工作不在」。显示器热插拔之后旧坐标可能落在已消失的屏上,恢复逻辑必须能把窗口拽回当前还存在的屏,而不是在虚拟桌面的空洞里创建一个看不见的窗口。崩溃恢复和主动退出应走同一套状态,否则人会学会「千万别正常退出」。
怎么研究
空间记忆实验给被试一套窗口布局,间隔后让他们在空白桌面上重建,或判断「这扇窗是不是还在原来的地方」。Task Gallery、Data Mountain 这一支用空间位置当检索线索。更贴近产品的做法是:完成一段多窗口任务,强制退出,再计时「恢复到能继续」的时间。
自变量:是否恢复几何、是否恢复文档与滚动、退出到重开的间隔、显示器数量是否变化。 因变量:重建布局的误差、找回任务的时间、打开后发生的「窗口找不到了」次数。
实验室间隔以分钟计,真实间隔是隔夜或系统更新;隔夜之后空间记忆仍在,但显示器拓扑可能已经变了,两件事要分开测。
边界
首次启动没有可恢复的状态,应给一个明确的空态,不要伪造「你上次的窗口」。公共机、临时账户、隐私模式不应把文档内容写回磁盘。文档已被外部删除或路径失效时,恢复几何可以,恢复内容必须失败得可理解。全屏游戏和放映结束后通常回到桌面外壳,而不是昨晚的关卡。浏览器把「继续上次的标签」做成选项,是因为会话里可能有不该被别人看见的页——恢复是默认,但仍要能关。
怎么落地
- 在退出、崩溃和系统重启三条路径上写入同一份状态:屏、位置、尺寸、最大化、打开对象、滚动或插入点。
- 目标屏已不存在时,把窗口放到主屏并保证完全可见,不要在消失的坐标上创建窗口。
- 验证:布置两扇窗口到不同尺寸与位置,打开一份文档滚到中部,强制结束进程后重开。窗口应回到原几何,文档仍停在中部。拔掉一块显示器再开,窗口必须出现在还在的那块屏上。