蘋果iOS不了解,所以這里只討論安卓和Windows在安裝軟件方面的區別。
Windows的大型軟件通常都不是“綠色”的,需要安裝,而且安裝后的文件還不止一個。往往至少有一個exe文件,還有若干個dll,以及其他的資源文件(圖片、視頻、本地數據庫等)。其中dll叫做動態鏈接庫,可以用來和其他程序進行共享。比方說視頻解碼功能,就可以編寫一個專門的dll。另外Windows還有一個com機制,它的dll共享功能更加強大,但是必須注冊。所謂注冊,就是寫入注冊表,通知操作系統其他軟件如何調用它。
請注意,雖然開發人員不會經常自己寫dll,但是會調用別人寫好的共享dll,所謂的拿來主義。而使用它們,就必須在安裝時也一并裝上,注冊上。
Windows的這種共享機制,使得Windows大型程序往往都有很多很多文件,還有很多很多寫入注冊表和寫入系統目錄的操作。
安卓的安裝就顯得簡單很多。安卓同樣也需要共享庫,這是所有大型程序都必須的。但是安卓在安裝是會把這些庫,還有資源文件全部壓縮打包(zip),變成一個apk文件。如果一個APP有1G,即是指這個apk單個文件有1G。如果是Windows,則可能是指成千上萬個文件加起來1G。因為Windows沒有打包。安卓的這種安裝部署方式的好處就是簡單,壞處就是沒有實現真正的共享,造成空間浪費。這個好處壞處就不再展開討論。反正大家現在明白了,安裝時,安卓是將所有文件打包成一個文件,Windows不打包。
在安裝時,不管是Windows還是安卓,面對大型軟件都是比較慢的,甚至超過1分鐘。比如安卓,會將1個G的單個apk復制到手機存儲上,有的還需要預編譯。不過這不是重點,我們關注的是卸載速度。
重點來了,為什么卸載時安卓幾乎是“秒卸”,而Windows很慢?
剛說了,安卓安裝時只有一個apk文件,
再看Windows,那文件就多了,一堆dll,一堆資源文件,還要對注冊表進行逐一清理。
我們再看看為什么刪除一個大型文件很快,哪怕是1個G甚至幾十G都用不了1秒?這在安卓和Windows上都同樣適用,刪除單個文件都快。因為刪除文件的時候并沒有徹底把文件清零,而僅僅是把這個文件的占用區域做一個標記,標記為“已刪除”。徹底刪除大家在Windows上聽說過,叫“粉碎”,一些第三方軟件(360等)有這個功能。相反,如過刪除的文件很多,則時間還是比較長的,積少成多嘛。因為標記為“已刪除”也需要花一點時間的。