Android Webview通过缓存提高性能

时间:2017-01-06 13:50:08

标签: android performance listview webview

我正在开发和Android应用程序,其中包含遗留代码,我们正在使用ListView并使用ViewHolder优化listview。

我们的列表视图有不同类型的自定义视图,这些视图有点完整。列表视图的滚动性能到现在为止还不错。 已经出现了一个新的要求,即在同一列表视图中支持Webview。要从磁盘和javascript加载的webview内容已启用。

问题在于,当我在列表中添加网页浏览时,滚动会变得紧张。在滚动过程中,我可以看到webview内容是空白的,因为它仍然需要加载。

我认为性能下降是由于两个原因造成的。 1)创建+每次调用listview适配器的getView时加载新的Web视图 2)显示webview的内容

为了解决这些问题,我开始缓存7个webview,我通过从上一个父视图分离并附加到新的父视图来回收webview。例如,如果当前可见项索引是5.我还将为三个下一个(6,7,8)和三个prev(2,3,4)项创建webview,并根据listview的一些id将它们保存在缓存中项目内容。因此,当需要索引6的下一个项目时,我将简单地从缓存中返回一个项目,并从前面和后面更新两个项目以保存3,4,5和7,8,9个索引项目。

我在想通过创建一个webviews池来解决这两个问题。 1)创建新的webview时,getview被称为。通过预取下一个/上一个3-3项,我可以预加载网址,以便在后台显示。

但我可以看到显示仍然需要时间,滚动仍然是紧张不安。

所以我的问题是: - webview是否仅在附加到窗口时才显示内容? (在我看来,缓存中的webview没有附加到窗口,我在其中加载了URL。) webview是否仅在可见时才显示内容? 有没有办法在后台渲染webview的内容,以便通过创建Webview的缓存我可以做平滑的滚动。

0 个答案:

没有答案
相关问题