2012-09-20 28 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毫秒。