2012-09-20 60 views
1

我有紅色的表面視圖渲染速度更快,但需要比視圖更多的資源。Android,關於surfaecview和視圖

從我的測試,我想這代碼:

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    canvas.drawColor(Color.WHITE); 
    Log.i("OnDraw","ping"); 
    invalidate(); 
} 

一個是surfaceview類渲染,而另一種是視圖類呈現,在他們兩個有相同的代碼。 從日誌聊天中,我可以看到來自Log.i方法的消息在視圖類中刷新得更快 - 每個視圖之間的延遲大約爲70毫秒,而在surfaceView的情況下,刷新速度更慢 - 約100毫秒之間的延遲。

那麼...什麼給了?

+0

基於刷新時間,我猜你在模擬器中運行?我對Android上2D繪圖應用的建議:在真實手機上運行它們進行調試和分析。真實手機的性能與仿真器不同。在開始優化性能之前,請嘗試在手機上運行它 - 根據我的經驗,使用SurfaceView在手機上進行2D繪圖性能非常好。我知道這並不能真正回答你的問題,但我想我會給你一些建議(軼事),因爲我最近走了這條路。 – Ivan

+0

這也是我的猜測,我注意到在手機和模擬器上的性能存在差異,我想我需要安裝我的手機直接在他身上進行調試以查看我的自我:) –

回答

1

SurfaceView的主要優點是可以從不同的線程繪製它。所以,對於實時遊戲,你一定會需要SurfaceView甚至GLSurfaceView。 對於遊戲,如卡和多米諾骨牌意見將可能罰款相同非遊戲應用

關於圖紙的機制,我相信沒有什麼專門規定SurfaceView更快雖然因爲普通視圖只能從UI線程SurfaceView經常更新是唯一的選擇。

0

在調試過的真實手機上測試了相同的代碼之後,我可以說刷新速度對於視圖和表面視圖都沒有很大的可見差異,儘管對模擬器有很大改進,但它們都在刷新在大約20毫秒。