2013-02-26 66 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).