当前位置: 华文问答 > 数码

为什么 Windows 操作系统开很多应用和游戏都不会杀后台?

2020-03-25数码

操作系统接口设计的原因。

Android 跟 iOS,在操作系统设计的时候,就告诉应用,我通知你退你就得赶紧退,给个函数回调让你自己想办法存盘,料理后事,但凡收到这个消息,应用只能乖乖保存退出,不能做其它的。而且这个函数不允许阻塞,你在这个函数里面占用时间过长,也会强行杀掉你。

而Windows设计的时候不是这样做的,而是弄了一个有返回值的函数,询问应用是否愿意退。应用可以直接返回【我不愿意退】,也可以直接将这个函数阻塞,比方说弄个弹窗询问你要不要保存啊然后挂起询问,不给任何回应【不理睬操作系统】。

这就意味着,Windows的接口设计使得根本没有办法可靠的将传统Windows应用程序正常退出。——实际上新的系统设计新的API都会避免这个问题,比方说UWP应用就可以可靠的退出,操作系统再也不会被应用程序胁迫了。那些基于Win10新接口的应用基本上都能够随时退出不影响系统关闭或者重启。

所以,不是Windows不杀后台,而是Windows也想杀后台但它做不到。

--

补充:似乎一部分人对我说的「做不到」存在误解。

Windows确实可以无条件干掉进程,用户主动操作的情况下就可以。但是如果在用户不知情的情况下,偷偷强制干掉进程,这是越界了,作为一个操作系统,它违法了,因为那是异常退出。

Windows做不到的是正常通知任意进程体面的退出,因为某些进程可能根本不愿退。

对于android/iOS来说,可以干掉进程是因为确实他们必须存盘退出,那是正常的体面的退出方式。新设计的UWP应用也是如此,必须响应这样的退出。