安卓系統(tǒng)是谷歌在Linux系統(tǒng)的基礎(chǔ)上開(kāi)發(fā)的一款移動(dòng)操作系統(tǒng)掏击,而安卓系統(tǒng)的應(yīng)用程序則是在運(yùn)行在一個(gè)基于Linux系統(tǒng)內(nèi)核之上的虛擬機(jī)之中缩功,這個(gè)虛擬機(jī)屬于谷歌自己開(kāi)發(fā)的一個(gè)Java虛擬機(jī)韭山,在其中運(yùn)行的應(yīng)用程序也繼續(xù)Java進(jìn)行編寫(xiě)的功蜓。Java的跨平臺(tái)性和兼容性雖然非常好,但是Java的內(nèi)存應(yīng)用機(jī)制卻是不太合適使用在移動(dòng)設(shè)備上
Java的內(nèi)存管理使用了一個(gè)垃圾回收機(jī)制戴质,系統(tǒng)中有一個(gè)規(guī)則是用來(lái)回收內(nèi)存的度宦,這個(gè)機(jī)制規(guī)定內(nèi)存在低于某個(gè)值時(shí)會(huì)選擇性的關(guān)閉程序踢匣,而在平常程序會(huì)常駐在內(nèi)存中,在下次使用會(huì)直接從內(nèi)存中讀取戈抄,加快程序打開(kāi)速度离唬。這個(gè)機(jī)制雖然很好用,但是當(dāng)運(yùn)行大型軟件時(shí)划鸽,就會(huì)因?yàn)閮?nèi)存不足而選擇關(guān)閉其他應(yīng)用输莺,這樣會(huì)頻繁的訪問(wèn)內(nèi)存,于是就造成了運(yùn)行大型軟件時(shí)會(huì)出現(xiàn)卡頓的現(xiàn)象裸诽。
第二個(gè)原因就是安卓目前使用的Dalvik虛擬機(jī)是在運(yùn)行程序時(shí)嫂用,每次都需要將程序代碼編譯為機(jī)器碼運(yùn)行,這樣就多加了一個(gè)步驟而且更加耗電丈冬。不過(guò)在最新的Android4.4.4開(kāi)始谷歌新加了一個(gè)ART模式尸折,在安卓時(shí)就將軟件直接編譯為機(jī)器碼,加快了系統(tǒng)的運(yùn)行速率
于蘋(píng)果來(lái)說(shuō)殷蛇,卻和安卓的內(nèi)存管理機(jī)制有著本質(zhì)上的區(qū)別,iOS系統(tǒng)沒(méi)有所謂的垃圾回收機(jī)制和Mac系統(tǒng)類似橄浓,將內(nèi)存分為自由(Free)粒梦、空閑(inactive)、活躍(active)以及固定(wired)四個(gè)類型荸实,并且根據(jù)系統(tǒng)需要進(jìn)行相互轉(zhuǎn)化匀们,當(dāng)用戶點(diǎn)擊Home鍵返回桌面后,程序就會(huì)被暫停准给,而不會(huì)在后臺(tái)運(yùn)行泄朴,并且會(huì)按照程序在內(nèi)存中的屬性然后進(jìn)行關(guān)閉不需要的程序,所以很多用戶說(shuō)蘋(píng)果的系統(tǒng)是假后臺(tái)露氮,對(duì)于蘋(píng)果系統(tǒng)來(lái)說(shuō)祖灰,系統(tǒng)優(yōu)化和關(guān)后臺(tái)是不需要的操作,清理的效果和系統(tǒng)自己對(duì)內(nèi)存管理產(chǎn)生的效果沒(méi)有區(qū)別畔规。這也就為什么蘋(píng)果用1GB內(nèi)存但是流暢度秒殺安卓3GB手機(jī)的原因
優(yōu)先級(jí)區(qū)別:iOS最先響應(yīng)屏幕
當(dāng)我們使用手機(jī)時(shí)局扶,解鎖、滑動(dòng)等操作iOS系統(tǒng)就表現(xiàn)出了流暢的一面叁扫,但Android產(chǎn)品卻給人一種反應(yīng)慢三妈、不跟手的情況,這是為什么莫绣?
其實(shí)這與兩個(gè)系統(tǒng)的優(yōu)先級(jí)有關(guān)畴蒲,iOS對(duì)屏幕反應(yīng)的優(yōu)先級(jí)是最高的,它的響應(yīng)順序依次為Touch--Media--Service--Core架構(gòu)对室,換句話說(shuō)當(dāng)用戶只要觸摸接觸了屏幕之后模燥,系統(tǒng)就會(huì)最優(yōu)先去處理屏幕顯示也就是Touch這個(gè)層級(jí)咖祭,然后才是媒體(Media),服務(wù)(Service)以及Core架構(gòu)涧窒。
而Android系統(tǒng)的優(yōu)先級(jí)響應(yīng)層級(jí)則是Application(應(yīng)用)--Framework(框架)--Library(圖像處理)--Kernal架構(gòu)心肪,和顯示相關(guān)的圖形圖像處理這一部分屬于Library,你可以看到第三位才是它纠吴,當(dāng)你觸摸屏幕之后Android系統(tǒng)首先會(huì)激活應(yīng)用硬鞍,框架然后才是屏幕最后是核心架構(gòu)。
因此戴已,優(yōu)先級(jí)不同導(dǎo)致了iOS產(chǎn)品以及Android產(chǎn)品在操控過(guò)程中表現(xiàn)的差異固该。在滑動(dòng)屏幕是,iOS系統(tǒng)會(huì)優(yōu)先處理Touch層級(jí)糖儡,而Android系統(tǒng)則是第三個(gè)才響應(yīng)Library層級(jí)伐坏,這是造成它們流暢度不同的因素之一,但不是絕對(duì)的握联。
硬件工作區(qū)別:iOS基于GPU加速
目前手機(jī)的處理器等硬件配置已經(jīng)達(dá)到了瓶頸期桦沉,各大旗艦產(chǎn)品在硬件比拼中基本上沒(méi)有太大變化,而GPU就成為了差異化最重要的體現(xiàn)金闽。
一般來(lái)說(shuō)一些大型3D游戲?qū)τ贕PU要求較高而纯露,蘋(píng)果的Power VR SGX系列GPU一直是以高性能著稱的。
為iOS系統(tǒng)對(duì)于圖形的處理都是基于GPU硬件加速代芜,可以減輕CPU運(yùn)算的壓力但是Android為了適配不同硬件的手機(jī)埠褪,需要滿足各種差異配置。
所以很多圖形特效處理大部分都要靠程序本身進(jìn)行加速和渲染挤庇,并嚴(yán)重依賴CPU運(yùn)算的操作自然會(huì)加大處理器的負(fù)荷钞速,從而出現(xiàn)卡頓的問(wèn)題。
雖然在Android4.0以后的系統(tǒng)中都默認(rèn)開(kāi)啟了硬件加速嫡秕,但依舊無(wú)法做到運(yùn)用GPU加速全部的圖形特效渴语。
屏幕優(yōu)先響應(yīng),再加上iSO本身GPU加速程序的特性昆咽,使得iOS系統(tǒng)在操作中擁有不錯(cuò)的流暢性遵班,iOS系統(tǒng)的這些流程本身都是在為流暢服務(wù)。而GPU加速這點(diǎn)特性潮改,應(yīng)該是它優(yōu)于Android系統(tǒng)流暢性的又一個(gè)因素狭郑。
系統(tǒng)設(shè)計(jì)區(qū)別:安卓APP無(wú)法統(tǒng)一
上面的兩個(gè)原因,似乎已經(jīng)可以大概解釋為什么iOS相比Android更為流暢的原因汇在。但最終還有一個(gè)問(wèn)題是應(yīng)用程序翰萨,在Android上似乎系統(tǒng)自帶的軟件很少出現(xiàn)卡頓,而一旦安裝一些第三方應(yīng)用后糕殉,卡頓問(wèn)題就逐漸出現(xiàn)亩鬼,這究竟是為什么殖告?
因?yàn)閕OS系統(tǒng)的封閉性,對(duì)于APP的開(kāi)發(fā)框架有極為嚴(yán)格的限制雳锋,所以APP在iOS系統(tǒng)上運(yùn)行對(duì)象比較單一黄绩。
還有就是蘋(píng)果設(shè)備的硬件供應(yīng)商比較固定,CPU也是有規(guī)律更新玷过,不像Android終端不停地在變爽丹,開(kāi)發(fā)者很難針對(duì)一款設(shè)備開(kāi)發(fā)專用的軟件,需要兼容多個(gè)CPU或GPU的硬件平臺(tái)辛蚊,這就導(dǎo)致了Android應(yīng)用開(kāi)發(fā)成本較高且收益慢粤蝎。
反觀iOS應(yīng)用開(kāi)發(fā)則因?yàn)檐浻布怪闭隙芤妫@樣一來(lái)蘋(píng)果自然就保證了應(yīng)用本身其與硬件產(chǎn)品之間的完美結(jié)合程度袋马。
簡(jiǎn)單地說(shuō)初澎,如果有Android開(kāi)發(fā)者專門針對(duì)某款旗艦手機(jī)開(kāi)發(fā)出的大型游戲,那么在流暢度上來(lái)說(shuō)虑凛,理論上不會(huì)出現(xiàn)卡頓延遲的問(wèn)題碑宴。
因此,開(kāi)發(fā)者不可能針對(duì)所有的機(jī)器型號(hào)進(jìn)行開(kāi)發(fā)桑谍,只能在比較主流的機(jī)器上進(jìn)行測(cè)試并保證運(yùn)行效果墓懂,所以他們?yōu)榱思骖櫿麄€(gè)產(chǎn)品線,不得不降低游戲體驗(yàn)以達(dá)到高中低產(chǎn)品可以共用的效果
因?yàn)锳ndroid終端高中低檔手機(jī)的用戶數(shù)量多霉囚,自然而然就會(huì)產(chǎn)生Android產(chǎn)品不如iOS流暢的抱怨。
總結(jié)一句話:Android考慮更多的是“怎么讓系統(tǒng)能夠運(yùn)行”匕积,而iOS無(wú)時(shí)無(wú)刻想著“怎么讓系統(tǒng)高效地運(yùn)行”盈罐。