設想一下,在2019年,如果您擁有一臺4G記憶體的安卓手機,是怎樣的體驗?
在國內,4G記憶體的iPhone甚至可以擊敗12G記憶體安卓,這又是為什麼?
iPhone的通知推送是 “系統級別”的,它獨立於APP,也就是說iPhone的通知推送不僅僅是iPhone與服務提供商之間的對等通訊,而是iPhone與蘋果伺服器之間的通訊。這是什麼意思呢?來看下圖。
舉個例子:微信伺服器向蘋果伺服器傳送一條訊息,然後蘋果伺服器將這條訊息傳輸到您的裝置上。當您收到通知後,開啟微信程式,微信才開始接收來自微信伺服器的資料,雖然它與您之前看到的通知相同,但其實它們是通過兩個不同的通道。
IPhone簡化了裝置本身的通訊過程,所以它只需要一個埠就可以和蘋果自己的伺服器進行通訊,而不是像安卓那樣每個APP都有不同的埠,這其實就是iPhone即使記憶體很小也能流暢執行的祕密。
安卓的推送方式更像是“計算機系統”,每個需要推送到後臺的APP都有自己獨立的後臺程序,與自己的伺服器進行通訊,交換資料。
其實很多國外的安卓裝置擁有與蘋果類似的推送通知服務,它們是通過Google Cloud Message,只是Google Cloud Message在國內被遮蔽了。
為什麼安卓裝置需要大記憶體?這實際上是一個涉及到iOS和安卓作業系統設計原則的技術問題。這個問題在國內更為明顯。由於無法連線到谷歌伺服器,各家手機廠商為國內的安卓裝置增加了更多的記憶體。在全球銷售的華為P30中,128G的硬碟僅配備4G或6G記憶體;而國內版的P30, 64G硬碟就配備了8G記憶體。在國內,您很難找到擁有128G硬碟和4G記憶體的安卓裝置,至少有8G。其實不是安卓手機廠商在國內作秀,用越來越大的記憶體吸引消費者的眼球,事實上,這是國內安卓生態系統的無奈之舉。
在安卓系統中,每個APP都必須在後臺預留一些記憶體,以備接收隨時可能傳入的訊息。換句話說,當您剛剛開啟手機,還沒有開始使用它們的時候,您手機上所有APP上的某些執行緒已經悄悄啟動並存入了記憶體。
這些後臺啟動的執行緒不能關閉,因為它們是“合法的”。如果它們被關閉,使用者將不會及時收到訊息。另外,不要低估了這些後臺執行緒的數量,一款APP在後臺佔用12 MB或20 MB實在是不多,但100個APP (64G硬碟手機可容納100個APP)加起來就吃掉了近2G記憶體。
當您給您的朋友傳送資訊時,這個資訊不是直接從您的手機發送到他的手機,而是您的手機發送到騰訊的伺服器,然後騰訊的伺服器再發送給您的朋友。此時問題出現了,如果他手機上的微信APP關閉,即使騰訊伺服器傳送訊息,他也不會收到,因為他手機上的微信APP已經完全與騰訊伺服器斷開連線。
只有當他再次開啟微信時,微信APP和騰訊伺服器之間的連線才會恢復,他才能接收到訊息。如果他想及時收到訊息,那麼微信APP不應該完全關閉,而是需要留一些執行緒,在後臺保持執行,並與騰訊的伺服器保持連線,以便在收到訊息後,系統能夠及時啟動“通知推送機制”來提醒他。
因此,安卓設別的記憶體容量必須隨著硬碟容量的增加而增加。硬碟容量越大,可以安裝的APP越多,需要的記憶體越多,才能保證APP在後臺留下的執行緒正常執行。
為什麼iPhone僅僅只有4G記憶體卻能流暢執行?現在來談談iPhone,為什麼它不需要大記憶體?因為蘋果有自己的伺服器,iPhone系統必須與蘋果的伺服器配對才能正常執行。當iPhone連線到網際網路時,iOS系統會立刻與蘋果的伺服器建立一個持續的連線。
1. 您的朋友給您發了一條訊息,這條訊息首先被髮送到騰訊的伺服器;
3. 於是就會把這個資訊轉到蘋果伺服器上;
4. 然後蘋果伺服器收到後會傳送到您的iOS系統,系統會及時發出通知。
實際上只有一個額外的步驟,但好處是“微信APP在您的手機上可以完全關閉”,沒有必要留下額外的執行緒來接收訊息,因為蘋果的伺服器總是“繼續接收訊息”並向iPhone傳送訊息,然後推送通知給您。這樣,iPhone的記憶體就不需要隨著硬碟容量的增加而增加,因為即使APP完全關閉,也不會影響通知的及時接收。
此外,iPhone實際上並不支援真正意義上的後臺執行。在後臺,它只支援有限的操作,比如聽歌曲、下載和導航。如果一個APP進入後臺,但在10分鐘內沒有被轉移到前臺,系統將關閉它,只留下“死前的截圖”。這就是所謂的“墓碑機制”。因此,iPhone的大部分記憶體只為當前的APP服務,所以一個APP使用4G記憶體,真的“綽綽有餘”。