RecyclerView内的Webview有时仅在牛轧糖设备上显示空白屏幕

问题描述:

在我的Nougat设备中,RecyclerView内部的webview有时是空白的。当我慢慢滚动,然后回到webview项目内容消失。 Android N以下的设备没有问题。Android N使用Chrome作为应用的默认浏览器。所以我认为Chrome中可能存在一个bug,所以我在chrome门户中也发现了一个bug。 SO中有几个相关的问题,但这并没有解决我的问题。那么有没有办法在Android webview设置中解决这个问题?我在bug链接中写了详细描述。RecyclerView内的Webview有时仅在牛轧糖设备上显示空白屏幕

错误链接:为的WebView click here

我onBindViewHolder方法的代码是

final VHItem vhItem = (VHItem) holder; 

vhItem.webViewChild.getSettings().setUseWideViewPort(false); 
vhItem.webViewChild.getSettings().setJavaScriptEnabled(true); 

vhItem.webViewChild.loadData("<body>" + html + "</body>", "text/html;charset=utf-8", "utf-8"); 

其中

HTML是HTML字符串

更新

他们已经解决了这个问题。如果您仍然遇到同样的问题,请尝试将您的Android Chrome版本更新至61或更高版本。当您滚动速度非常快 Recyclerview纯粹是基于充气的观点最小的时间和重用现有的观点

+0

你可以粘贴你的onBindViewHolder()。或者你完成适配器 –

+0

@DigvijaySingh检查我编辑的问题。 – Kunu

+0

此答案可能会帮助您https://*.com/a/2379054/5908465 –

这个问题可以到达许多可能的原因

  • 。这意味着,当一个视图(一个项目)退出屏幕时,当您滚动屏幕时,只需通过更改其内容即可购买相同的视图。从Internet上加载时,首先下载所有数据并显示它总是更好。 Webview消耗大量数据,完全违背设计原则,让他们进入Recyclerview。

要修复此问题,您可能需要添加一些按钮以在每次显示视图时重新加载数据或刷新。

  • 牛轧糖从http urlconnection类中删除了一些函数 我不确定这个。但在谷歌开发人员视频之一,T已经看到了一些关于某些功能和方法的贬值

希望你会发现这有帮助。

对于开始的webview消耗内存,因为它负载必须加载和呈现html数据。而不是在回收站视图中使用网页视图,我认为这将是更好,如果你实现它通过以下两种方式:

  1. 您处理数据的列表中的HTML,并将其发送到网页视图并删除回收站完全查看
  2. 您可以在xml中绘制预期内容的布局,并将其直接膨胀到recyclerview并移除完成的webview。 (注意:根据适配器在该位置的位置和数据,可以将不同视图充入回收站)。

使用webview可能似乎是实现任何你试图但相信我的简单方法,缺点超出了这个好处。所以它最好避免它。

+0

如果您实施应用程序作用域高速缓存并使用应用程序上下文创建WebView,则RecyclerView中的WebView是可管理的。这样,您不必在每次滚动到视口或每个屏幕方向更改时重新初始化它。 –

+0

@EugenPechanec你能说一点吗? – Kunu

+0

是的,请您介绍一下如何管理带有应用范围的网页浏览。 – Harsh