十萬萬個為什麼:蘋果手機運存小,為什麼流暢度反而勝於安卓?
十萬萬個為什麼
- 知其然,知其所以然 -
科普
第 23 期
你能一口氣想到幾個原因
蘋果手機運存高嗎?
不高,與安卓機型比,少的不是一星半點。
安卓機型已經發展到8G運存,而蘋果手機的運存最高也才3G,處理器最高也才6核(如iPhoneX)。
弔詭的是大家都感受到蘋果手機卻比安卓手機流暢度要高,這就不得不讓人佩服了。
雖然安卓手機已經做了很大改善,不像當初那般稍微用的久一些,就會頻頻卡頓。但在手指觸碰到屏幕的那一瞬間,還能感受到安卓特色般的「生硬」感,不像蘋果手機「乾脆利落」帶來的別樣流暢感。
這到底是什麼原因造成的呢?
一、系統環境迥異
「買IOS贈手機」可以說是對蘋果系統最生動的描述了,事實也證明IOS系統不負眾望。
IOS憑藉著強大的統一性和可控性,讓一切程序都是井然有序的運行。
打個比方,IOS系統就像一支政令統一、紀律嚴明的武裝部隊,一道命令下去,很快就能落實。
反觀Android就不同了,除了要保證現有的硬體能有順暢運行,還要確保那些廠商提供的各種未知的組合硬體,可控環境差很多。
這就好比一支部隊除了要打仗,還有兼顧修路等各種雜七雜八的事,職責模糊,一旦任務發生衝突,自然也就無所適從,影響效率。
二、優先次序不同
大家或許都有這樣一種感受:
同一個應用程序,在蘋果手機上和安卓手機上打開時,後者總比前者慢那麼一點。
這是什麼原因造成的呢?那是因為二者的響應順序不同。
IOS對屏幕的響應順序是:觸摸→媒體→服務→架構,而安卓是:程序→框架→屏幕顯示資源→架構。
這也就是說,打開一個應用程序時,觸摸的一瞬間蘋果手機就有反應了,而安卓手機還有「考慮」一會才有反應。
這個過程看似很短,但在具體使用過程中,還是明顯能夠感覺到。
結果蘋果手機自然要給人的感覺快一些。
三、開發環境不同
Android採用的是Java虛擬機堆技術,而IOS的開發語言為Objective—C。
Java虛擬機堆技術本質上是一次解釋多條命令,通過多開虛擬機堆提高解釋成指令的速度,提高了java軟體在手機上運行的速度。
說的更直白些就是一道命令下達時事先需要解釋,這就造成cpu在等待數據過程中浪費時間,數據從手機內存到cpu需要時間。
而解釋又不是一次就能搞定,可能需要多次才可以解釋完成指令,送到虛擬機里執行。
這就像一個公司董事長要舉行活動,然後把任務下達給各部門經理並做了詳細介紹,然後再由中層領導向普通員工傳達,由於溝通不到位,需要董事長、經理、員工之間多次溝通才能把事情搞清楚。
這樣自然要耽誤時間,慢下來也在情理之中了。
Objective—C在運行過程中不需要虛擬機在中間插手,是系統本身運行程序的執行過程,執行效率自然很高。
好比董事長直接面對底層員工,省去中層領導這個環節,效率自然會高一些。
四、運行機制不同
IOS的後台是「偽後台」,Android的後台是「真後台」。
這是什麼意思呢?
IOS在運行時看起來打開了很多應用程序,但是除了當前運行的之外,其他的程序在後台都處於「睡眠」狀態。
就像你用蘋果手機同時打開了微信、支付寶、微博、王者榮耀等應用程序,如果你當前用的是支付寶,其它幾個則就不再運行。
而Android就不一樣了,只要不手動退出,後台程序就會一直處於運行之中。
也就是說如果你現在用的是支付寶,而其它幾個程序看似沒有用,其實仍然還在運行。
還有就是Android系統都是很多手機廠商定製的,往往捆綁大量軟體,不得不用很高的內存來支撐。
五、國內外環境不同
使用國外安卓手機的或許都有一個感受,雖然流暢度和蘋果有點差異,但不像國內的那麼明顯。
這就納悶了,難道外國的月亮就比較圓么?
事實上,這都是國內手機軟體造的孽,我們平時下載的App還常駐後台,相互喚醒。
也就是說看似我們關掉了某個APP,實際上它們一直在後台藏著偷偷活動。
更為可惡的是如果我們打開某個APP,它總要拖家帶口,甚至把隔壁老王也一起叫上,這樣不卡才怪呢。
國外的這種情況就要輕很多,順暢度自然也就好很多了。
還有就是國內的App下載後,CPU的負荷度遠超國外的,這就好比一個人總是處在很緊張很大壓力下,整個人能精神起來嗎?
- END -