Android硬件加速webview崩溃

Android硬件加速webview崩溃,android,Android,通过android market,for my app用户报告了大量不支持的操作异常。堆栈跟踪指向从webview代码内部进行的drawPicture()调用。我确实在我的应用程序中使用网络视图 我知道打开HWA时不支持drawPicture(),但在本例中,调用来自webview内部。我是否需要采取特殊步骤来确保webview不会使用此方法 不幸的是,我无法重现这个问题,但用户肯定看到了 堆栈跟踪: java.lang.UnsupportedOperationException at andr

通过android market,for my app用户报告了大量不支持的操作异常。堆栈跟踪指向从webview代码内部进行的drawPicture()调用。我确实在我的应用程序中使用网络视图

我知道打开HWA时不支持drawPicture(),但在本例中,调用来自webview内部。我是否需要采取特殊步骤来确保webview不会使用此方法

不幸的是,我无法重现这个问题,但用户肯定看到了

堆栈跟踪:

java.lang.UnsupportedOperationException
at android.view.GLES20Canvas.drawPicture(GLES20Canvas.java:753)
at android.webkit.WebView.drawCoreAndCursorRing(WebView.java:4128)
at android.webkit.WebView.drawContent(WebView.java:3797)
at android.webkit.WebView.onDraw(WebView.java:3862)
at android.view.View.draw(View.java:9286)
at android.view.View.getDisplayList(View.java:8749)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.getDisplayList(View.java:8747)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.draw(View.java:9289)
at android.view.View.getDisplayList(View.java:8749)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.getDisplayList(View.java:8747)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.getDisplayList(View.java:8747)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.draw(View.java:9289)
at android.widget.FrameLayout.draw(FrameLayout.java:419)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1923)
at android.view.View.getDisplayList(View.java:8749)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.getDisplayList(View.java:8747)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.draw(View.java:9289)
at android.view.View.getDisplayList(View.java:8749)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.getDisplayList(View.java:8747)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.getDisplayList(View.java:8747)
at android.view.ViewGroup.drawChild(ViewGroup.java:2554)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
at android.view.View.draw(View.java:9289)
at android.widget.FrameLayout.draw(FrameLayout.java:419)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1923)
at android.view.View.getDisplayList(View.java:8749)
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:609)
at android.view.ViewRoot.draw(ViewRoot.java:1600)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1416)
at android.view.ViewRoot.handleMessage(ViewRoot.java:2046)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)

你在用修复术吗?(,java.io.File))


硬件加速不支持该方法(并且该方法已被弃用,因此您无论如何都应该放弃)。作为一种解决方法,在加载其他内容之前,您可以将webview设置为软件层。

这是一个有趣的错误。当WebView在硬件加速画布上绘制时,它不使用drawPicture(),而是使用完全不同的代码路径。如果你能想出一个复制案例,请发送给我,我会转发给WebView团队。不知道为什么会被否决……我使用的是restorePicture(),所以这可能是根本原因。该代码路径并没有为我执行,但可能在某些情况下(例如,设备内存不足)会执行该代码路径。我将继续测试,看看删除restorePicture()是否有帮助。