应用可能在任意时刻被回收
别名: 进程被杀 · 后台回收 · process death · LMK
概念解释
进程死亡(process death)指应用进程在人不主动关闭的情况下被系统结束:内存吃紧、厂商的后台清理、系统更新、从多任务界面划掉、长时间未回到前台。多任务界面里那张卡片是最近界面的快照,不是「进程还活着」的证明。人切去接电话、看验证码、换一个相机应用,回来时原应用可能已经不在内存里。这条只谈「进程可以在任意时刻消失」这件事本身,不谈回来时屏幕该回到哪一页,也不谈输入框里的字如何落盘。
机制
移动操作系统按重要性给进程分级:前台、可见、服务、缓存。内存不够时从缓存级开始杀,低内存杀手(LMK)不排队通知应用「你还有三十秒」。厂商层还会在省电策略里主动清后台,时间点对应用不可见。多任务栏缓存的是截图与任务描述,系统用它维持「还在」的错觉,所以人会把卡片在当成进程在。划掉卡片在部分系统上等于显式杀死,在另一些系统上只是忘掉任务;两种操作的表面相似,寿命结果不同。任何把会话状态只放在进程内存里的设计,都把存活寄托在一次不可预测的调度上。
怎么研究
用现场日志和受控杀死,而不是只在 USB 供电的实验室机上看「切走再切回」。
自变量:切走时长、前台内存压力(同时打开相机或浏览器)、是否从多任务栏划掉、厂商省电档位。 因变量:进程是否还在、冷启动比例、人是否报告「我以为还开着」、强制停止的频率。
注意实验室里内存充裕、禁用了厂商清理,会严重低估死亡率。问卷里「你会不会划掉后台」测的是心智模型,不是真实寿命;要把系统级进程寿命日志和自述对照。不要把「用户爱清后台」直接读成电量焦虑——部分人是在用划掉来确认任务结束。
边界
被系统标为前台服务的持续任务(导航、通话、录音)在正常策略下更抗杀,但不能推广到普通界面。调试时连着线、开着不休眠,死亡几乎不出现,会得出「切走是安全的」假象。桌面操作系统的内存压力模型不同,窗口被挡住不等于进程被回收。人明确点了退出或登出,那是主动结束会话,不是回收,不应被恢复成「还在用」。
怎么落地
- 把「进程随时会没」写成默认前提:任何只活在内存里的会话,都视为会丢。
- 不要用多任务卡片上的截图当进度承诺;卡片在、进程可以已经不在。
- 验证:在一台未接电源、开着相机或浏览器占内存的真机上,把应用切到后台满两分钟,再用系统工具确认进程是否还在。对已消失的每一次,检查产品是否把它当成了一次普通的「暂停」。