當前位置: 華文問答 > 數碼

為什麽 Windows 作業系統開很多套用和遊戲都不會殺後台?

2020-03-25數碼

作業系統介面設計的原因。

Android 跟 iOS,在作業系統設計的時候,就告訴套用,我通知你退你就得趕緊退,給個函數回呼讓你自己想辦法存盤,料理後事,但凡收到這個訊息,套用只能乖乖保存結束,不能做其它的。而且這個函數不允許阻塞,你在這個函數裏面占用時間過長,也會強行殺掉你。

而Windows設計的時候不是這樣做的,而是弄了一個有返回值的函數,詢問套用是否願意退。套用可以直接返回【我不願意退】,也可以直接將這個函數阻塞,比方說弄個彈窗詢問你要不要保存啊然後掛起詢問,不給任何回應【不理睬作業系統】。

這就意味著,Windows的介面設計使得根本沒有辦法可靠的將傳統Windows應用程式正常結束。——實際上新的系統設計新的API都會避免這個問題,比方說UWP套用就可以可靠的結束,作業系統再也不會被應用程式脅迫了。那些基於Win10新介面的套用基本上都能夠隨時結束不影響系統關閉或者重新開機。

所以,不是Windows不殺後台,而是Windows也想殺後台但它做不到。

--

補充:似乎一部份人對我說的「做不到」存在誤解。

Windows確實可以無條件幹掉行程,使用者主動操作的情況下就可以。但是如果在使用者不知情的情況下,偷偷強制幹掉行程,這是越界了,作為一個作業系統,它違法了,因為那是異常結束。

Windows做不到的是正常通知任意行程體面的結束,因為某些行程可能根本不願退。

對於android/iOS來說,可以幹掉行程是因為確實他們必須存盤結束,那是正常的體面的結束方式。新設計的UWP套用也是如此,必須響應這樣的結束。