Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 使用SurfaceView的Android平板电脑性能缓慢_Performance_Surfaceview_Android - Fatal编程技术网

Performance 使用SurfaceView的Android平板电脑性能缓慢

Performance 使用SurfaceView的Android平板电脑性能缓慢,performance,surfaceview,android,Performance,Surfaceview,Android,我正在用Android开发一款纸牌游戏,使用SurfaceView和canvas绘制UI 我已经尽可能地优化了一切,但我仍然有两个问题: 在游戏中,我需要绘制40个位图,即意大利牌组中的40张牌,是在自定义SurfaceView的onCreate方法上创建所有位图并将其存储在一个数组中更好,还是在每次用户获得一张新牌时根据需要创建这些位图更好 我能在旧的三星I5500 528兆赫的QVGA屏幕上获得超过90 fps的速度,在Optimus Life 800兆赫和HVGA屏幕上获得60 fps的速

我正在用Android开发一款纸牌游戏,使用SurfaceView和canvas绘制UI

我已经尽可能地优化了一切,但我仍然有两个问题:

在游戏中,我需要绘制40个位图,即意大利牌组中的40张牌,是在自定义SurfaceView的onCreate方法上创建所有位图并将其存储在一个数组中更好,还是在每次用户获得一张新牌时根据需要创建这些位图更好

我能在旧的三星I5500 528兆赫的QVGA屏幕上获得超过90 fps的速度,在Optimus Life 800兆赫和HVGA屏幕上获得60 fps的速度,在Nexus One/Motorola Razr 1 GHz和双核1GHz的WVGA和qHD屏幕上获得60 fps的速度,但当我在Android平板电脑Motorola Xoom双核1 GHz和1 GB内存上运行游戏时,我只能获得30/40 fps的速度。。。一个528MHz的cpu和256MB的RAM怎么可能处理90+fps,而一个双核处理器却不能处理60fps?我在运行时没有看到任何类型的GC调用

编辑:我只是想澄清一下,我已经尝试了ARGB_888和RGB_565,但性能没有任何变化

有什么建议吗?
感谢您考虑以下几点:

建议不要在游戏运行时创建新对象,否则可能会出现意外的垃圾收集

你的FPS数字听起来不太好,你可能有测量错误,但我猜你正在调整图像大小以适应屏幕大小,这会影响游戏的内存使用,并可能导致平板电脑上的渲染时间变慢

您可以使用分析工具确认:

OpenGL会快得多

最后一个提示:如果可以,不要画重叠的牌,只画可见的牌

祝你好运

好的,所以最好用onCreate方法创建位图,这就是我现在正在做的

他们是好的,我相信一些设备上的60 fps只是制作人的一些限制,因为你不会发现获得60 fps以上的任何优势。我做这个假设,因为它不会改变渲染1张卡、10张卡或没有卡。。。OnDraw方法每秒调用60次,但如果我添加50/100张卡,它会相应地掉落,我不会调整任何卡的大小,因为我为每个设备使用了适当的文件夹mdpi、hdpi、ecc,我会得到图像的确切大小,而不会调整大小

我试过查看它,但据我所知,应用程序执行的所有时间都用于绘制位图,而不是调整其大小或更新其位置

我知道,但这会增加开发的复杂性,而且我相信在屏幕上使用一张画布制作7张卡片应该很好

我并不是一副牌都抽。。我只是根据需要交换位图:

更新:我试着在Xoom 2、Galaxy Tab 7 plus和华硕Transformer Prime上运行游戏,它以60 fps的速度运行良好…。这可能只是Tegra 2设备的问题吗