【发布时间】:2012-01-09 02:53:46
【问题描述】:
可能发生了一些愚蠢的事情,但我正在尝试在针对 3.1 的应用中启用硬件加速,每 this tutorial。
我已将以下内容添加到我的清单中:
<uses-sdk
android:targetSdkVersion="12"
android:minSdkVersion="12" />
<application
...
android:hardwareAccelerated="true">
当我在附加视图后检查硬件加速状态时(通过在覆盖的 onAttachedToWindow() 中调用 isHardwareAccelerated())我返回 true,所以一切看起来都很好。问题是 SurfaceView 的 Canvas 没有被加速,因为canvas.isHardwareAccelerated() 返回 false。我正在检查surfaceCreated(),我也确实在那里,所以不知道为什么 Canvas 会丢失这个设置。
任何指针?
编辑1:
在 Google Developers 组中找到 this 和 this,但如果我在 onAttachedToWindow() 中检查,我确实在附加视图后检查,对吧?这是在运行 3.1 BTW 的联想平板电脑上。
EDIT2:
我尝试通过设置禁用加速
<application
...
android:hardwareAccelerated="false">
我仍然看到从 onAttachedToWindow() 中的视图返回 true,所以这里有些东西不正确。我没有从代码中明确地 chanbing hw accel,也许是设备特定的问题?
另外,创建 SurfaceView 时,我在 LogCat 中偶尔看到以下行:
surface (identity=524) is invalid, err=-19 (No such device)
EDIT3:
只是在这里大声思考,但是由于 Canvas 位于自己的线程上,通过使用绘图循环的典型 SurfaceView 实现(如 Lunar Lander),是否有可能没有加速 Canvas?
【问题讨论】: