无法为 WebView 创建层,尺寸 640x7040 最大尺寸 8192 颜色类型 4 具有上下文 1

Posted

技术标签:

【中文标题】无法为 WebView 创建层,尺寸 640x7040 最大尺寸 8192 颜色类型 4 具有上下文 1【英文标题】:Unable to create layer for WebView, size 640x7040 max size 8192 color type 4 has context 1 【发布时间】:2019-11-03 12:36:51 【问题描述】:

我在 ScrollView 中使用 WebView,它在三星 SM-J610F 上提供 IllegalStateException。它在我测试过此代码的其他设备上运行良好。

当我从ScrollView 中取出WebView 时,它工作正常。但问题是我在 WebView 下面还有其他视图,如果我不使用ScrollView,用户将无法看到这些视图。

Font Cache (CPU):
      Size: 103.02 kB 
      Glyph Count: 37 
    CPU Caches:
      Shadows: 4.22 KB (2 entries)
    GPU Caches:
      Other:
        Buffer Object: 63.00 KB (2 entries)
      Image:
        Texture: 1.81 MB (28 entries)
             Texture( 1):      168840 Byte (count:8)
             Texture( 2):       54288 Byte (count:1)
             Texture( 3):       44100 Byte (count:1)
             Texture( 4):       31684 Byte (count:6)
             Texture( 5):       29580 Byte (count:1)
             Texture( 6):       29568 Byte (count:1)
             Texture( 7):       29232 Byte (count:3)
             Texture( 8):       28896 Byte (count:1)
             Texture( 9):       28560 Byte (count:1)
             Texture(10):       11024 Byte (count:1)
             .......   
      Scratch:
        Texture: 512.00 KB (1 entry)
        RenderTarget: 1.46 MB (14 entries)
        Buffer Object: 96.03 KB (4 entries)
    Other Caches:
                             Current / Maximum
      VectorDrawableAtlas    0.00 kB /   0.00 KB (entries = 0)
      Layers Total           0.00 KB (numLayers = 0)
    Total GPU memory usage

JNI DETECTED ERROR IN APPLICATION: JNI CallObjectMethod called with pending exception java.lang.IllegalStateException: Unable to create layer for WebView, size 640x7040 max size 8192 color type 4 has context 1
......

【问题讨论】:

我们在 Samsung Galaxy J6+、Samsung Galaxy J4+、诺基亚 2.1 上的一个非常大的应用程序上看到此错误。所有受影响设备的操作系统均为 android 9。 @TimoBähr 所以你没有解决这个问题的办法吗? 很遗憾没有。 你能提供更多关于你的视图结构的细节吗? 我在 SAMSUNG 社区开了一个帖子,也许他们可以帮忙:developer.samsung.com/forum/board/thread/… 【参考方案1】:

从滚动视图中移除 webview 并将其单独放置。此外,所有其他视图都将它们添加到 Scrollview 中。这样,您的 webview 也将稳定,用户将能够滚动并参考其他视图。 此外,应正确声明和实施 webview:

 wv = (WebView) findViewById(R.id.web_view);
        wv.setInitialScale(1);      //webview page matches the screen size.
        wv.getSettings().setLoadWithOverviewMode(true);
        wv.getSettings().setUseWideViewPort(true);
        wv.getSettings().setjavascriptEnabled(true);
        wv.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);    //loads online website when no internet connection.
        wv.loadUrl("https://prajwalwaingankar.wixsite.com/nivala");

根据上面的代码,所有的视图都在webview的上面,webview使用方法.setInitialScale(1);

【讨论】:

在我们的设置中无法将 webview 从滚动视图中移除,因为我们在滚动视图中同时显示 oEmbed/iFrames 和原生文本部分。我说的是新闻应用和文章页面。 @mughi198 您是否检查过您的 J610F 设备上的这些设置。我只能让受影响的用户完全发布应用程序来测试建议的解决方案。 是的,我已经测试了上面提到的设置,这个解决方案对我不起作用。为了解决这个问题,我不得不更改应用程序的设计 @mughi198 那是我说的改变你的观点和设计 如前所述,很遗憾不能更改设计。

以上是关于无法为 WebView 创建层,尺寸 640x7040 最大尺寸 8192 颜色类型 4 具有上下文 1的主要内容,如果未能解决你的问题,请参考以下文章

AE插件Saber

Android:WebView 中加载的图像中的像素质量降低

Android WebView - 以全尺寸查看页面(如在 pc 上)

使用 Xamarin 表单更新到 AppCompat 后 WebView 中的白色叠加层

无法启动活动 ComponentInfo java.lang.RuntimeException:无法创建 webview

使用 C# 到 JavaScript 的 UWP WebView 中 JSON 的问题无法正确读取