无法为 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的主要内容,如果未能解决你的问题,请参考以下文章
Android:WebView 中加载的图像中的像素质量降低
Android WebView - 以全尺寸查看页面(如在 pc 上)
使用 Xamarin 表单更新到 AppCompat 后 WebView 中的白色叠加层
无法启动活动 ComponentInfo java.lang.RuntimeException:无法创建 webview