2013-02-26 68 views
3

我想通过网页预加载WebView的缓存。这需要进行异步和隐藏,以免干扰其他UI交互。预加载的目的是为了避免后续的网络调用,如果通过可选的按钮点击(最终用于更快的显示)呈现WebView。WebView缓存的后台预加载

该网页包含Javascript和AJAX,所以我不认为使用像HttpClient这样的东西预加载缓存将工作。我也研究了在AsyncTask中使用WebView的loadUrl(),但我看到这与主UI线程冲突。

有没有人有类似的情况发现了一种方法来完成后台预加载/缓存?

+0

你觉得呢? http://stackoverflow.com/questions/7944546/android-webview-load-in-background – 2013-03-06 12:14:52

回答

3

WebView默认情况下在单独的线程中加载数据,因此不需要使用AsyncTask。只需创建一个隐藏的WebView并致电loadUrl()

如果要预加载多个URL,可以使用WebViewClient并覆盖onPageFinished()来检测第一个URL何时完成。当您完成WebView时,请确保您删除对其的引用,以便可以进行垃圾回收。

最后,如果你想确保可见WebView始终使用的缓存版本的URL的可用时,您可以拨打:

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK).