A. 為什麼蘋果的iOS系統比安卓系統更加的流暢和穩定呢
有很多的人都有一個巨大的疑問,為什麼安卓手機在流暢度上趕不上蘋果手機,這是因為兩者的系統機制不同導致有運行快慢的差別。
一、渲染的機制不同
蘋果手機的UI渲染採用的是實時優先順序,比如說你正在用的APP就會運行速度特別流暢,而安卓手機的渲染遵從的是傳統的電腦模式,主線的程序比較優先,通俗易懂的來說,就是蘋果手機對屏幕的反應靈敏度較高,使用者只要觸摸手機的屏幕,系統就會優先處理屏幕上顯示的軟體,立馬做出動畫效果以及其他的下一級反應,而安卓系統則追求的是進程優先,打開相同的網頁,安卓手機首先要對整個網頁載入完成,並且要渲染它的HTML,這樣的行為就降低了處理器的速度。
B. 安卓為什麼不能做到像 iOS 一樣流暢
一般來說,手機的流暢度是跟硬體成正比的。從2010至今,安卓手機硬體上都有了很大的飛躍,硬體不再成為制約流暢度的瓶頸了。單單以手機內存為例,一些安卓旗艦手機都已經4GB了,相比之下,iPhone 6才僅僅1GB內存。
那麼問題來了,蘋果手機在配置被安卓完爆的情況下,為什麼反而更流暢呢?
原因很多種,其中最重要的是後台機制的不同,試想如今的APP都是動輒幾十M的,而蘋果1GB內存不但夠用而且這么流暢,它的「偽後台」功不可沒。
一:偽後台與真後台的不同
既然有「偽後台」那必然也會有「真後台」,「真後台」就是當你打開一個APP後,它會一直在後台運行,除非你主動去關閉或者內存不夠用了。而且任何應用都可以同時進行,它們可以同時連接網路,GPS定位,推送消息等等,這樣的後台機制便是」真後台「,Android系統就是」真後台「。
而蘋果手機的iOS系統卻剛好相反,當你按下Home鍵回到桌面的時候,你之前運行的程序大多數都會凍結,你可以理解為從內存中寫入到ROM中。等到你再打開這個APP,iOS會重新載入的畫面,由於這個過程很快,所以你幾乎察覺不到它是在重新載入。
要想證明這一點很簡單,比如你用iPhone看視頻或者玩游戲,當你切出去的時候它們會自動暫停在那裡,視頻也不會再繼續緩沖,因為這個APP被凍結了。如果要想實現真後台,那隻能越獄了。
當你的手機返回桌面之後,iOS系統會分析判斷這些後台程序,你經常使用且有用的就保留,哪些是沒用就進行凍結,以保證內存最大功效的利用,繼而帶來系統的流暢感。這也就是為什麼iPhone雖然只有1GB內存,但卻足夠使用的原因。
二:「真偽後台」優缺點分析
偽後台的優勢:
內存利用率非常高,系統運行流暢,高效率的內存使用以及很多應用退到後台斷開網路連接等原因帶來的是耗電量的大幅度降低,手機的發熱量減少。這也就是為什麼iPhone 6電池容量僅1810mAh,續航卻很不錯的原因。
偽後台的劣勢:
除了當前在使用的程序或個別重要的程序是真正運行的,大部分隱藏在後台的程序都是靜止的,這也就是很多朋友稱為「墓碑式」後台,你在平常生活中可能感覺不到什麼,但有時候可能會延遲或者遺漏重要的消息通知。
真後台的優勢:
當系統在運行一個應用程序時,可以同時在後台處理多個任務,讓你在玩游戲,看書的同時,還可以緩存電影,緩沖網頁,更新軟體,地圖導航等等眾多任務同時進行,給用戶帶來極大的方便。
真後台的劣勢:
內存佔有率極高,後台運行的程序還會繼續聯網工作,處理器不得不一直進行極快的運算處理,從而帶來卡頓,手機電量消耗高,手機發熱等後果,這也是有些安卓手機掉電異常快的原因。
另外值得一提的是,「偽後台」與「單任務」不是一個概念。簡單來說,「單任務」指的是只能單獨運行一個任務,「偽後台」是一種後台機制,可以運行多個任務,但系統會自行限制後台APP的類型和數量。
C. 老生常談:安卓手機流暢度為什麼不如IOS
一、優先順序別不同:iOS最先響應屏幕
當我們使用iOS或者是Android手機時,第一步就是滑屏解鎖找到相應程序點擊進入。而這個時候往往是所有操控開始的第一步驟,iOS系統產品就表現出來了流暢的一面,但Android產品卻給人一種卡頓的現象,更別說後續深入玩游戲或者進行其它操控了。這是為什麼?
其實這與兩個系統的優先順序有關,iOS對屏幕反應的優先順序是最高的,它的響應順序依次為Touch--Media--Service--Core架構,換句話說當用戶只要觸摸接觸了屏幕之後,系統就會最優先去處理屏幕顯示也就是Touch這個層級,然後才是媒體(Media),服務(Service)以及Core架構。而Android系統的優先順序響應層級則是Application--Framework--Library--Kernal架構,和顯示相關的圖形圖像處理這一部分屬於Library,你可以看到到第三位才是它,當你觸摸屏幕之後Android系統首先會激活應用,框架然後才是屏幕最後是核心架構。
優先順序的不同導致了iOS產品以及Android手機在操控過程中的表現差異,當你滑動屏幕進行操控的時候,iOS系統會優先處理Touch層級,而Android系統則是第三個才響應Library層級,這是造成它們流暢度不同的因素之一。
二、硬體工作配置不同:iOS基於GPU加速
目前智能手機硬體裝備競賽當中,其實處理器等配置已經達到了一個瓶頸期,各大旗艦產品在硬體比拼當中基本上沒有太大的區別,而這時候GPU就成為了一個凸顯差異的重要因素。一些大型軟體像是3D游戲對GPU性能要求都會比較高,蘋果iPhone產品採用的Power VR SGX系列GPU在當下來說非常的主流,跑分測試數據證明了它並不會比一些旗艦級別的Android產品差勁。
而iOS系統對圖形的各種特效處理基本上正好都是基於GPU硬體進行加速的,它可以不用完全藉助CPU或者程序本身,而是通過GPU進行渲染以達到更流暢的操控表現。但是Android系統產品則並非如此,因為Android需要適應不同的手機硬體,需要滿足各種差異配置,所以很多圖形特效大多都要靠程序本身進行加速和渲染,並嚴重依賴CPU運算的操作自然會加大處理器的負荷,從而出現卡頓的問題。雖然Android 4.0以及4.1等更高版本中進行了改進將硬體加速設為默認開啟,但依舊無法做到所有特效全部都靠GPU進行加速。在很多Android手機裡面都自帶有「是否開啟GPU渲染」這個功能選項,不過開啟之後的改善也是微乎其微。
屏幕最先響應的優先順序關系,再加上iSO本身GPU加速程序的特性,使得大家在操控過程中感覺iOS手機擁有著不錯的流暢性。因為它本身的整個流程都是在為最大化的流暢做服務,不管是第一印象的滑動接觸屏幕,還是你進一步使用程序之後的更深層操作都是如此。而GPU加速這點特性,應該是它優於Android系統流暢性的又一個因素。
三、開發機制不同:安卓機制效率低
Android的編程語言是JAVA,而iOS的則為Objective-C,不過要是說Android系統之所以有些卡頓是因為JAVA開發語言的關系,或者是拿它和Objective-C對比肯定會有人提出質疑。Objective-C的優勢是效率高但比較「唯一」,而JAVA的優勢則是跨平台不過運行效率相對偏低,其實這兩個編程語言所帶來的機制不同,就已經造成了各自系統之間的流暢性差異化。
iOS的Objective-C,編譯器gcc,而這個gcc編譯出來的代碼又被蘋果專為iOS架構優化到了極致,運行過程中也不需要虛擬機在中間插手,執行效率自然很高。這一段話應該是iOS系統本身運行程序的執行過程,而Android是通過JAVA虛擬機來執行,並且系統需要佔用大量內存來換取執行速度,再加上不定期的內存自動回收機制,從而直接導致了卡頓現象的出現。
Android的JAVA編程本身運行效率比Objective-C低一些,而且再加上內存自動回收的機制,所以造成了一些卡頓不流暢的現象出現。但根據技術人員講解,現代的JAVA虛擬機效率已經不再是最大的瓶頸,Android 4.0系統版本之後的卡頓現象明顯得到了改善,所以這也是有用戶並沒有發現自己新買的Android手機出現太多卡頓現象的原因。看來編程語言和機制已經被Android進行了改善,這同樣也不是造成它與iOS流暢性偏差的唯一因素,不過影響卻是實實在在存在著。
三、系統設計不同:安卓APP無法統一
因為iOS產品的封閉性,所以所有的APP運行對象都比較單一,因為每個應用程序都是被運行在iPhone,iPad等iOS產品當中,它們有著很高的硬體利用效率。因為iOS系統的配件供應商只有那麼幾家,CPU也是一年換一次,這點不像Android終端年年變月月變,開發者很難遇見未來終端解析度會包含多少種,GPU驅動會包含哪些等等,所以相對來說Android應用開發成本較高且收益較慢。而iOS應用開發則因為軟硬體垂直整合而受益,這樣一來蘋果自然就保證了應用本身其與硬體產品之間的完美結合程度。
其實Android和iOS兩大系統APP開發情況的不同,也正是它們開發和不開放的特性所造成的。如果要是拿旗艦Android手機加上一個專為這款旗艦產品設計的游戲,來和蘋果iPhone運行對比的話,你真的不會遇到Android旗艦機出現卡頓延遲的問題,為什麼因為這款游戲針對這款手機設計,在軟硬等方面都達到了最大化的兼容和優化,自然就不會出現停滯的現象。
而Android系統程序要被安裝在各種符合要求的手機上面,開發者也不可能針對所有的機器型號進行開發,只能在比較主流的機器上進行測試並保證運行效果,所以他們為了兼顧整個產品線只能不得不降低游戲體驗以達到高中低產品可以共用的效果。最後那些占據了Android終端份額的大量大眾用戶們由於自己的手機不是旗艦產品而得不到流暢的使用體驗,自然而然就會產生Android產品不如iOS流暢的抱怨。
不管是iOS產品感覺比Android流暢還是真的比它流暢,其實說到底原因很簡單。蘋果會花費一年甚至兩年的時間去開發一個桌面icon,一種字體,並去測試屏幕點位,而Android終端中除了Nexus系列之外似乎沒有太多產品可以做到用這么長的時間去做這么細致的事情。有網友說得好,Android做的更多的是「讓系統跑起來」,而iOS擁有著蘋果做的更多的則是「讓系統以最高的效率跑起來」,或許這就是iOS產品比Android更流暢的原因吧。但更好的一面的是,隨著谷歌對Android的持續升級以及各廠商對自家產品的循序改進,使得越來越多的Android終端正在擺脫卡頓不流暢的束縛,未來安卓用戶的期待同樣有望得到更好的滿足。
o