2010-08-20 55 views
5

我用兩種方法編寫了相同的程序。SurfaceView與自定義視圖(從視圖擴展)。 SurfaceView速度較慢,爲什麼?

一個使用Surfaceview,另一個使用自定義視圖。根據android SDK開發指南,使用表面視圖更好,因爲你可以產生一個單獨的線程來處理圖形。該SDK開發指南聲稱,使用具有無效調用的自定義視圖僅適用於較慢的動畫,不太強烈的圖形。

但是,在我的簡單應用程序中,我可以清楚地看到,使用調用無效的自定義視圖似乎渲染速度更快。

你們對此有何認識?

我的touchEvent代碼是完全一樣的,我的繪圖代碼完全一樣。唯一的區別是一個是在UI線程中,另一個是使用踩點來處理繪圖。

回答

2

SurfaceView支持繪製2個緩衝區,您的自定義視圖如何?

另一件事:你提到,文檔說invalidate快速動畫/較不強烈的圖形工作。你的「簡單應用」有多緊張?您應該嘗試進行壓力測試,並考慮單線程如何處理您的觸摸輸入。

我有3個線程在我的遊戲中。一個用於遊戲邏輯,一個用於繪圖,然後是「正常」UI線程...

+0

我的應用程序需要觸摸輸入並在觸摸屏上滑動時繪製一個跟隨手指的圓。我注意到應用程序的SurfaceView版本有一點滯後。 我想說,我的應用程序在處理UI輸入和圖形方面並不緊張。 – 2010-08-20 14:16:12

+0

然後我定義激烈否則。爲了確定真實的性能,您應該將觸摸處理和圖形分別用於表面視圖的不同線程。然後你會得到真正的結果。也可以畫出更多的一個圓圈,因爲激烈的是更多......你在哪個設備上測試過? – WarrenFaith 2010-08-20 20:08:01