在之前使用Windows XP的时候,都会有这样的经历,即打开一大堆的窗口,在任务栏排的满满的,同样程序的不同程序还可以分组,看似很有条理的样子…
不光Windows,Linux桌面,MacOS竟然也 学 着Windows的样子,也这么做。当然了,我没有扒过GUI的历史,也不敢确认这种携带任务栏的GUI桌面到底是源自何方,不过无所谓,就假设它是微软的原创吧。
一直纳闷,Windows的手机和平板总是看起来别别扭扭的,也不知道哪里出了问题。后来终于找到了这件事和任务栏的关联。
在手机,平板这种屏幕有限,且用户关注单一全屏UI的环境下,根本就没有任务栏存在的必要,推而广之,其实就算在Windows XP上,也不需要有任务栏,那为什么要有任务栏?
我假设任务栏是从微软开始设计出来的。
任务栏是为了暂存GUI程序的窗口的,虽然桌面本身就已经支持了重叠窗口,但是为了让桌面可以更加整洁些,Windows允许将非前台的程序窗口最小化暂存到任务栏,等到它获得焦点的时候,再恢复它到前端。
现在的问题是,为什么要暂存一个GUI窗口,直接结束掉这个程序不行吗?答案看起来很简单,因为有很多的状态需要尚未保存和同步,比如用户可能在记事本上输入了一句不完整的话等等。
但这根本不是问题的满意答案,系统完全可以在结束这个GUI程序时自动保存状态啊,在用户看来,用户关心的是,只要它恢复的时候能保持和它上次离开焦点时的样子一致就可以了,而这些都是可以系统后台完成的啊。
任务栏根本就不需要,在GUI桌面系统,任何时候有且只有一个GUI程序的窗口时焦点窗口,系统可以随时结束任何非焦点的GUI程序,只要当它再次希望获得焦点时,恢复到系统关闭它时的状态即可。
没错,Android等手机,平板操作系统就是这么控制GUI窗口的,对于这些手机操作系统而言,一个小小的屏幕上往往只有一个程序在获取输入和输出,以上的特征更加明显,那么后台的程序便可以随时持久化后被系统结束掉,以节约能耗,当用户再度切换到该程序的时候,系统重新运行该程序就好了,然后反序列化同步状态即可。
Android和Windows的差别在于,到底是谁来结束GUI程序的差别,Android将控制权完全掌握在系统手中,而Windows XP则将控制权交给了用户。
在Windows XP看来,它是把所有的程序的控制权都交给了用户了,并没有对GUI程序加以区别,这是老式UNIX的传统。然而,GUI程序有所不同。
和服务器程序比如Apache需要持续侦听端口提供服务不同,GUI程序的运行几乎完全靠用户的操作来驱动,一旦失去焦点,GUI程序几乎是无事可做的,它就静静地hang在哪里,平白无故地占用着系统的资源,而这是没有必要的。
Windows 8开始有了Metro界面,新的GUI控制改变了Windows XP的做法,它也可以 在保证状态同步的前提下,随时结束非焦点GUI程序 了。然而,毕竟有历史的兼容性包袱,Windows 8做的并不纯粹,它仍然可以用任务栏来暂留GUI程序窗口。怪不得Surface的界面总是那么别扭,估计也有这方面的原因。
浙江温州皮鞋湿,下雨进水不会胖。
(同步测试图片)
---------------------
作者:dog250
来源:CSDN
原文:https://blog.csdn.net/dog250/article/details/95034974
版权声明:本文为博主原创文章,转载请附上博文链接!