通过缓存提高Android Webview性能

通过缓存提高Android Webview性能,android,performance,listview,webview,Android,Performance,Listview,Webview,我正在开发Android应用程序,它有遗留代码,我们正在使用ListView,并通过使用ViewHolder优化ListView 我们的listview有不同类型的自定义视图,这些视图有点复杂。到目前为止,listview的滚动性能还不错。 在同一listview中支持WebView的新需求已经出现。将启用从磁盘和javascript加载的webview内容 问题是,当我在列表中添加WebView时,滚动会变得紧张不安。在滚动过程中,我可以看到webview内容是空白的,因为它仍在加载中 我认为

我正在开发Android应用程序,它有遗留代码,我们正在使用ListView,并通过使用ViewHolder优化ListView

我们的listview有不同类型的自定义视图,这些视图有点复杂。到目前为止,listview的滚动性能还不错。 在同一listview中支持WebView的新需求已经出现。将启用从磁盘和javascript加载的webview内容

问题是,当我在列表中添加WebView时,滚动会变得紧张不安。在滚动过程中,我可以看到webview内容是空白的,因为它仍在加载中

我认为性能下降有两个原因。 1) 每次调用listview适配器的getView时创建并加载新的WebView 2) 显示webview的内容

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

我在想,通过创建一个网络视图池,我将解决这两个问题。1) 在调用getview时创建新的webview。通过预取next/prev 3-3项,我可以预加载url,以便在后台显示

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

因此,我的问题是: webview是否仅在附加到窗口时显示内容?(在我的例子中,缓存中的Web视图未附加到窗口,我正在加载其中的url。) webview是否仅在内容可见时显示?
有没有一种方法可以在后台呈现webview的内容,这样通过创建webview的缓存,我就可以平滑地滚动

我可以建议使用Chrome自定义标签吗?谢谢你的建议。我需要加载本地HTML页面,以便Webview更适合。此外,我不想显示Chrome选项卡的顶部栏,用户可以在其中键入Url,因为Url是以编程方式提供的。我可以建议使用Chrome自定义选项卡。感谢您的建议。我需要加载本地HTML页面,以便Webview更适合。另外,我不想显示Chrome选项卡的顶部栏,用户可以在其中键入Url,因为Url是通过编程方式提供的。