2012-02-05 75 views
1

我正在使用SurfaceView和畫布繪製UI,在Android中開發紙牌遊戲。使用SurfaceView在Android平板電腦上的性能下降

我試圖優化一切儘可能的,但我仍然有兩個問題:

  • 在遊戲過程中,我需要畫40位圖(40卡在意大利甲板)在我自定義的SurfaceView的onCreate方法上創建所有位圖(將它們存儲在數組中),還是根據需要創建它們(例如,每次用戶獲取新卡時)都更好?

  • 我可以在老式三星I5500(528 MHz,QVGA屏幕)上獲得超過90 fps,Optimus Life(800 MHz和HVGA屏幕)60 fps,以及Nexus One /摩托羅拉Razr(1 GHz和雙核1GHz,WVGA和qHD屏幕),但當我在Android平板電腦上運行遊戲(摩托羅拉Xoom雙核1 GHz和1 GB Ram)時,我只能獲得30/40 fps ...有可能,一個528 MHz的CPU與256 MB的RAM可以處理90 + FPS和雙核心處理器不能處理60 FPS?我沒有看到任何形式的GC調用運行時的....

編輯:只是爲了澄清我都試過ARGB_888和RGB_565沒有表現任何改變......

任何建議? 感謝

回答

0

幾點供大家思考:

  1. 建議不要你的遊戲運行時創建新的對象,否則,你可能會得到意外的垃圾收集。

  2. 您的FPS數字聽起來不太好,您可能有測量錯誤,但我的猜測是您調整圖像的大小以適應屏幕大小,並影響遊戲的內存使用並可能導致渲染時間變慢平板電腦上。

  3. 可以使用的分析工具,以確認:TraceView

  4. 的OpenGL會更快

  5. 最後一個技巧:不要畫重疊的卡,如果你可以,只繪製可見的。

好運

0
  1. 好了,所以,最好在onCreate方法來創建位圖,這是我在做什麼現在...

  2. 他們都OK,我相信在某些設備上的60 fps只是生產商的一些限制,因爲你不會發現獲得超過60 fps的任何優勢(我正在做這個假設,因爲它不會改變渲染1張卡,10張卡或沒有卡片... OnDraw方法每秒調用60次,但是如果我添加例如50/100卡相應下降)我沒有調整任何卡的大小,因爲我爲每個設備使用了正確的文件夾(mdpi,hdpi,ecc),並且我獲得了圖像的確切大小,而無需調整其大小。

  3. 我想看看它,但是從我的理解應用程序執行的所有的時間都用來繪製位圖,而不是調整或在這裏更新它的位置,它是:

enter image description here

  • 我知道,但它會增加複雜性的發展,我相信,使用7張畫布在屏幕上應該就好...。

  • 我不畫甲板上的每卡..根據需要:)

  • 更新我只是交換位圖:我試圖在Xoom的2運行遊戲,Galaxy Tab的7加上和華碩變壓器總理和60 fps運行得很好......。它可能只是Tegra 2設備的問題嗎?