這個問題要從兩個方面來回答.

首先, 不知道大家有沒有用過聯想 K900, 這部當年被吹上天的"神機". 這已經是我不知道多少次把它拎出來黑了. 我們先來看下它的基本 (核心) 參數:
  • 核心: 雙核
  • CPU型號: Intel Atom Z2580

  • CPU頻率: 2048MHz
  • GPU型號: Imagination PowerVR SGX544 MP2
  • RAM容量: 2GB

就參數上看來, 簡直可以說是狂霸炫酷拽有沒有, 雙核 2GHz CPU, 2G RAM, 看起來似乎都是頂級配置.

但是拿到手用用呢? 感覺就是兩個字: 卡翔. 什麼應用都沒裝 (除了自帶和運營商內置) 的機子, 連解鎖屏都卡翔, 做什麼都卡, 用完它我甚至覺得我再用 Hero 都能再戰兩年. 事實上, 我用過的所有 Intel CPU 的 Android 手機, 毫無例外都是高配低能. 硬體代碼方面的東西我不瞭解, 但是這就是個事實擺在眼前. 聯想的 Intel CPU Android 手機卡翔, Moto 的 Intel Android 也卡翔. 所以, 第一個方面: 硬體優化不行. 只要看到 Intel x Android, 我都會下意識的遠遠避開.

第二方面就是軟體優化了. 有興趣的同學可以試試看, 同樣是微博客戶端, 在單核低端機, Android 4.X (比較容易看出差距) 上, 四次元, Fuubo 的列表滑動性能, 直接虐殺官方客戶端, 而四次元的 Overdraw 數量則遠遠小於 Fuubo (不知道現在還是不是這樣, 3.0 的 Overdraw 沒看過). 這樣的差距, 隨著配置的增高會逐漸縮短, 但是無法消除.

當然, 性能很差的國產應用是一抓一大把的. 原因有很多, 我懶的去想為什麼微博官方客戶端們的列表滑動性能那麼爛, 但是很常見的說法是, 因為他們內置了太多 iOS 樣式的控制項, 調用起來會花費更多系統資源, 還有為了兼容低端機而不開硬體加速等等. 所以, 第二個方面: 軟體優化不行. 只要看到 iOS Style 的應用, 我都會下意識的遠遠避開.

於是, 如果你在一臺採用 Intel CPU 的 Android 手機上, 運行那些優化不力的國產應用, 自然會產生"在硬體足夠強大的情況下, Android 應用仍會出現卡頓的現象"的感覺. 至於我用自己用的 Nexus 4, 從來就沒有遇到過卡的情況, 除了運行微信和微博官方客戶端的時候...

利益相關: 作者是四次元的 UI/UE 設計, RefecTech 團隊的 UED.
原因有二:
  1. 在主線程上渲染界面
  2. 界面渲染只擁有普通的優先順序

Android的開發工作早於iPhone的發布,當時是被視作Blackberry的競品的。最早的Android原型機甚至不是觸摸屏,是為滑鼠或者觸摸球而生的。等到iPhone發布之後,Android就被匆匆推上角鬥場。然而此時已經沒有足夠的時間重寫UI框架了。

一個產品在初代時如果存在致命弱點,那麼必然在日後的版本中進行一次推倒重建,否則就是長久的蛋疼。

總結來說,有幾個原因。


1.軟體 硬體分離生態,天生的性能詬病。
google生產系統,各大手機廠商生產硬體,這種方式快速地拉攏了一幫製造商,快速地發展了android,但這種模式天生就會帶來運行性能問題,系統運行在一套通用硬體介面上,手機廠商對這套介面優化無能為力,原因很多,大部分廠商對系統不懂,下不了手,廠商常常要和google進行鬥爭,比如google說,要使用google的服務,必須全套(map、message、google+)使用,而且是內置,並不得內置其他的類似應用,然後,手機廠商就不幹了,於是自己開發這些應用,而且是全套開發,費力啊,重要的是這些應用不是全部重新開發,而是基於google的來改的,然而還是基於老版本來改的,google可能已經更新到4.4了,然後這些廠商的這些應用還在使用2.3的那一套東西,so,性能能好嗎!所以,android的這種生態裏,組織間的鬥爭帶來的代價是性能丟失。

2.以java為開發語言的framwork架構。


這種設計我不清楚是最早期android團隊就是這樣設計的,還是後來google這樣設計的,反正這樣的設計帶來的好處就是,外面有一大波java開發者者。很明顯,android現在還在享受這樣設計帶來的好處。但是java這種虛擬機運行時語言,同樣是有著天生的性能問題。也是這個原因,google推出了基於c的原生開發框架,來解決這一性能問題,但是這樣的開發模式是高成本的,一是這種c開發框架只適合做一些底層的系統調用或者media處理,不能做ui的開發,二是這種c來做開發本身就比較難寫,顯然大部分android應用開發者是適應了java開發。所以,使用c來解決性能問題都是高成本應用。

3.兼容老版本的問題。


這個問題在android上太蛋疼了,google的android已經更新到4.4了,然而市面上還有30%的3.0系統,這就像全國人民都用上了win7,然而,在網吧和那些政府辦公室裡面依舊是wins xp。依舊是老掉渣的ie6,而且是大部分開發者都不會去兼容的ie版本。然而android上面,這個問題,很多應用不得不去做兼容,尤其是那些千萬級的應用。這種兼容模式的開啟,讓很多硬體資源是浪費掉的,比如,硬體加速(簡單的理解就是把圖像的處理由原來的cpu轉交給顯卡來處理,cpu就不會因為圖像渲染而忙不過來了)。硬體加速的速度提升可是很高的。我在開發的時候做了對比,速度提升要到30%到50%。

4.後臺噁心的推送服務。。


這個問題應該抽google的屁股,推送服務,就應該是google由系統層來統一發送,然而google這件事情很明顯應該挨屁股,so,各個應用就自己搭建推送服務,所以,應用一多,一大把的推送服務,在後臺跑著,這不僅耗的是電,跑的也是手機性能啊。

android廠商們現在在做的硬體,號稱4核心8核心。2g超大內存,這樣的出牌,我個人感覺很噁心,這樣的瘋狂的加硬體,只是為了病態的營銷,一部手機是一部系統,這個系統不僅僅是硬體,還有軟體,只有他們都一樣長了,才叫好手機,簡單的木桶原理。

一趟上班的公交,一個知乎回答,而且還沒寫完,不容易啊。。。而且還是第一次回答問題。嘎嘎,不要丟磚啊。


優化問題還有用戶使用習慣問題
Android系統本身和App的因素Android系統本身:

(1)系統響應等級不一樣:iOS對屏幕反應的優先順序是最高的,它的響應順序依次為Touch--Media--Service--Core架構(Mac OS 和 iOS 操作系統架構);而Android則是Application--Framework--Library--Kernal架構 (android系統體系結構),咱能看到的是Library這一層,所以會出現卡頓;

(2)硬體問題:iOS用了GPU加速,這個不是很懂,GPU處理圖像應該比CPU效率高,渲染強,這個等待高手補充;(3)Android構架本身:Android是基於Java構架的,Java需要在虛擬機上運行,這需要耗費大量內存,再加上不定期的內存自動回收機制,從而直接導致了卡頓現象的出現;所以Android的可移植性強但是效率當然不如iOS了,iOS基於Object-C,已經被蘋果搞的很順溜了,缺點就是一致性太差,玩過Mac都知道,在自己筆記本裝一下多困難!雖然後邊的Android版本加了硬體加速和三級緩存來緩解,但是你怎麼都繞不過JVM這一步,只是縮短時間。App問題:(1)碎片化帶來的App調試噩夢,屏幕、解析度。。。要在每個機子,每個版本的Android上調試,基本不可能,所以,軟體優化很有水分;(2)混亂的App市場,標準不統一(在改變),都是淚,劣質應用太多太多(還有山寨);(3)很多開發者不重視Android市場(為啥Android版本App總是後來,當然除了Google官方App,這個還是做得很良心的)展望(請拍磚):為了顧及人手中的手機硬體足夠強大了,足夠Android折騰,卡頓時間無限縮小到你分辨不出來,和蘋果一樣流暢,因為我們可以看的到Android的確是這樣的改變的,當然是否會重新構架Android我不知道,但一定會成為一個平民生態系統!
早期有個垃圾回收機制實現得不好,5後面的版本就好很多了


如今各大手機廠商紛紛亮相6GB/8GB的大運行內存,將會成為今年手機的標配。雖然廣告上的噱頭做的很到位,但是實際上也會卡頓。 很多人用久都會發現安卓手機比蘋果手機卡。

手機卡頓、手機死機的主要原因。為什麼即使安卓搭配了更大的內存也會卡頓?而蘋果內存不大卻不會卡?真正導致安卓卡頓的還是安卓系統在APP的優化上做的不到位。

安卓沒有固定的應用商城,用戶們可以隨時隨地的到各處下載APP,然而許多的APP會捆綁廣告,推送服務,後臺打開其他應用等,卻很難管理這些流氓軟體。當發現手機打開了幾個APP後,手機會有著明顯的卡頓,加載下一個界面都很慢。但在後臺數據來看,那就不是幾個APP的事情了。非常可能觸發了多個應用在後臺運行,原本幾百MB的佔用內存瞬間變成了2GB的佔用內存。給你6GB/8GB運行內存也很難做到真正流暢。

首先清除手機垃圾、清楚緩存、清楚手機數據這些都只是暫時性的緩解手機的壓力,這些操作治標不治本,隨著手機慢慢使用我們又得去重新清除。首先要獲取ROOT權限,管理自啓動應用。

再次關閉全部自啓動應用後重啓開機他們就不會再運行了,釋放出來的內存也是相當可觀。並且頻繁的清理手機內存並不是個好習慣!頻繁的清理手機內存實質上是強制性的結束任務,就如同在使用電腦,卡頓了強行的關機一樣。這樣久了對手機硬體是個硬傷,也是對手機卡頓的重要因素。

最後在安卓手機裡面,沒有管理好應用再大的運行內存也是擺設,所以關閉自啓動應用非常重要。


Android系統本身所說的完全不敢苟同。
推薦閱讀:
相關文章