【问题标题】:Android Webview on 4.4 freezes with nativeOnDraw failed; clearing to background color4.4 上的 Android Webview 因 nativeOnDraw 冻结而失败;清除为背景颜色
【发布时间】:2014-11-05 19:37:26
【问题描述】:

我知道这个问题已经被问过很多 times 并且几乎没有解决方法。但是它们都不适合我

我有一个使用 webview 的应用程序。在打开许多应用程序然后唤醒此应用程序时,有时会使 web 视图变为空白。应用程序的其他组件可以工作,但 webview 卡住了。

我在Androidmanifest.xml 中禁用了硬件加速,但它不起作用

<application
    android:name="com.nandish.app.MyApplication"
    android:largeHeap="true"
    android:hardwareAccelerated="false">

我尝试在 Webview 的构造函数中添加以下行

    setLayerType(View.LAYER_TYPE_SOFTWARE, null);

即使这样也行不通。我能够始终如一地重现空白屏幕。当它冻结时,日志上的错误消息是

09-11 23:29:31.237: W/AwContents(2976): nativeOnDraw failed; clearing to background color.

【问题讨论】:

    标签: android webview chromium android-4.4-kitkat hardware-acceleration


    【解决方案1】:

    我的 WebView 遇到了同样的问题,并找到了一个非常简单的解决方案。就我而言,这只是我给它加载 url 的方式。

    检查您的网址是否在开头包含“http://”。

    我试图从仅包含“www.google.com”的字符串中加载 url,并且在 LogCat 上出现“AwContents nativeOnDraw 失败;清除背景颜色”消息和令人沮丧的白屏而不是我的站点视图,这仅在 KitKat 上,在 GingerBread 上测试我的应用程序很好。 只需将其更改为“http://www.google.com”,一切顺利。

    没有禁用硬件加速并且完全向后兼容。

    【讨论】:

      【解决方案2】:

      我的代码的问题是使用的 webView 对象在其他地方被编辑,因为它是一个静态变量。我的坏,将这个对象用作静态对象是完全的灾难。一旦我转换为实例变量,它就起作用了。

      【讨论】:

        【解决方案3】:

        我遇到了同样的警告信息

        01-14 21:08:15.854 9400-9400/com.xiaomi.adecom W/AwContents: nativeOnDraw 失败;清除为背景颜色。

        当 webview 试图加载无效的 url,例如空 url 字符串,或者 url 字符串不是以“http://”开头时,会出现警告。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多