未启用硬件加速
可能有些愚蠢的事情发生了,但我试图在应用程序中启用硬件加速,目标锁定为每个this tutorial。未启用硬件加速
我已经添加了以下到我的清单:
<uses-sdk
android:targetSdkVersion="12"
android:minSdkVersion="12" />
<application
...
android:hardwareAccelerated="true">
当我检查硬件加速的状态下,查看连接(通过调用一个重写onAttachedToWindow()
isHardwareAccelerated()
),我现在回到真实的,所以所有后看起来很棒。问题是SurfaceView的画布没有被加速,因为canvas.isHardwareAccelerated()
返回false。我正在检查surfaceCreated()
,并且我在那里也得到了真实性,所以我不知道Canvas正在失去这个设置。
任何指针?
EDIT1:
发现了谷歌开发人员组this和this,但我确实检查,如果我检查这onAttachedToWindow()
查看连接后,对不对?这是在运行3.1 BTW的联想平板电脑上。
EDIT2:
我曾尝试禁用加速通过设置
<application
...
android:hardwareAccelerated="false">
而且我仍然看到真正从视图中onAttachedToWindow()
回来,所以事情是不是就在这里。我没有明确地从代码中加速,也许是一个设备特定的问题?
此外,我偶尔看到下面的行logcat中的SurfaceView创建时:
surface (identity=524) is invalid, err=-19 (No such device)
EDIT3:
只是想大声这里,但没有任何机会,Canvas是不由于它在自己的线程上,通过使用绘图循环的典型SurfaceView实现(如Lunar Lander)而加速?
这是预期的行为。 SurfaceView是而不是硬件加速。 (link)
由于Android 4.0有一个新的TextureView(这里是一个example)。
另请参阅此SO question 4.0之前的可用性。
更新:只测试了Android 4.0的Transformer,并且TextureView Canvas也没有硬件加速。 : -/
更新的Android 6.0:有硬件加速的新方法: https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas()