為什麼就算配置很高的 Android 手機玩遊戲感覺畫面也沒有 iPhone 流暢,而且觸屏感覺比較遲鈍?


這是兩者的系統架構不同導致。

首先是iOS對屏幕反應的優先順序是最高的(Touch-Media-Service-Core架構),也就是說用戶只要碰了屏幕,系統最優先去處理屏幕顯示,然後才是其他。而安卓則是傳統的Application-Framework-Library(JAVA虛擬機)-Kernal架構,圖形圖像處理在Library這層,優先順序不是那麼高。如果系統負荷較高,則無暇顧及用戶觸摸的反應。

其次是iOS對圖像的各種特效處理(放大、縮小、旋轉、滾動等)都是基於GPU硬體加速的,與APP無關。這是APPLE採用封閉式硬體的優勢。而安卓為了適應不同的手機硬體,做不到這點,很多APP的圖形特效都靠APP自己去進行軟體渲染,效率低。最新的4.1已經改進,但也無法做到所有特效都靠GPU硬體加速。

最後就是安卓的JAVA虛擬機:相對iOS的Objectiv-C,JAVA天生運行效率低下,需要佔用大量內存來換取執行速度,而不定期的內存自動回收機制,直接導致安卓界面的卡頓現象,無論如何優化也不可能改掉。2.3版安卓就是為改善此設計而發布:引入了一種新的並行內存回收機制來減輕這種卡頓影響,但也僅僅是減輕,而無法徹底消除。也因此2.3版成為安卓重要的里程碑。


指出贊同最多的答案里的幾處錯誤:

1、Android應用/遊戲不一定非要用Java寫,不然cocos2d-x什麼的還有啥意義~

2、Android用的不是JVM是DVM,有區別,真的有區別

3、Android開發難度要比iOS大一些,並非懂點兒coreJava的人就能勝任,

其實人方面的優勢在於Java從業者比C++從業者多,

所以尋找Android人才可能易於尋找iOS人才

4、虛擬機的內存佔用很有限,

Android App一般最多只有16M左右的空間可用,超過就會OOM,管理相對嚴謹;

而iOS的內存更為開放和自由,一個App佔用百十來MB不算什麼。

所以正是Android內存佔用太低了才會導致一些問題的,而不是過多。


只是說玩遊戲的話,主要原因是iphone配備了同代手機中最強大的GPU。至於遊戲本身,都是openGL,沒什麼區別。價格是主要原因


嗯 主要還是系統架構不同 蘋果對於觸摸反應優先順序放在最高位 這個是最重要的區別.


先入為主的心理原因


首先分析現象:

根據我的觀察(基於i9300),安卓部分遊戲的卡頓並不是開始就會卡頓,而是玩到一半有時候會卡頓。

基於這種現象的原因:

1.首先我讀到前面回答的內存問題,其實,安卓手機的各個廠商分配給應用層單個進程的內存是有差異的,比如小米手機對單個進程的內存分配給得很多,而三星是60MB左右,但是好像不是谷歌官方公布的16MB。

2.各個應用的service:眾所周知,IOS是偽後台,安卓是真後台,這是由service組件所提供的,這種組件的一般情況下都是在接收到開機意圖後開啟。也就是說你的手機在開機後service就跑在後台。這些service沒準什麼時候會佔用一下cpu,所以會「瞬卡」。

3.遊戲本身的廣告:眾所周知,安卓的遊戲基本都是免費的,盈利就要依靠廣告,這些廣告有些是一個窗口,有些卻是在後台悄悄執行,同樣,這些你看得見的、看不見的廣告也會在遊戲中偶然佔用CPU(惡意廣告更為甚至)。

如果一些應用市場可以做到像蘋果那樣嚴格的審核機制,我所說的這種現象應該有所改善。

至於樓主說的觸摸遲鈍,我沒有深入了解,不敢妄加贅述。


觸摸屏是有延遲的……據說有100ms左右……

但是我試過的iPhone4,5,明顯要比安卓(G14,Note2)跟手很多……

感覺除了系統原因外,觸摸感應晶元技術也有關係。

在安卓手機-開發者選項-顯示觸摸位置

這時候可以看到觸摸點,明顯要比手的動作遲緩……

所以除了軟體優化問題以外……應該硬體上也有差距

之前忘記哪個手機了,宣傳語中就有減少觸摸延遲……

據說微軟 High-Performance Touch 技術能將延遲 降低到1ms上……百度一下就能看到


Java


真正原因是這些遊戲大部分都是移植版


我自己的經驗,內存回收的過程還是會造成界面卡頓,特別是在需要大量緩存的應用中。這個在程序的構架上是可以優化。


試試最新的4.4版本的art運行時吧


這一類問題我覺得得分類判斷一下題目是否有意義。

1,題主是開發者或者所謂極客

那樣倒是有學習原理的價值和意義

2,題主只是普通用戶

那問題沒有價值,一方面,未必可以解釋的清楚,另一方面解釋清楚又能怎樣?

3,小人之心的以為,問題本身也未免讓人聯想到無數優越感

個人意見


配置高低不代表一切,有效的組合利用才可以,並且和軟體也有關係(系統、驅動)


android的系統架構本來就不怎麼樣。現在手機開始流行拼配置一說,也就是android給帶起來的。那麼高的配置,系統運行都不流暢,操作體驗很差。作為用戶才不會去關心什麼系統底層的東西,只管好用不好用。iphone配置一般,卻很流暢,再往老一點說,symbian配置更差,運行也沒有卡頓的現象。而如今的android動不動就是雙核四核,但運行起來真有那麼流暢嗎?稀爛。


推薦閱讀:

如何在android面試中把Activity的生命周期說的很有逼格?
如何成為一名合格的 Android 開發工程師?
4個月寫了4萬行iOS代碼,算多還是少呢?
在Android開發的過程中,有哪些坑是值得你放在checklist中警示自己的?

TAG:iPhone | iOS開發 | Android開發 | Android手機 | Android |