2012-01-18 72 views
9

一旦加載頁面,強制Android將webview存儲到介質的最佳方式是什麼?存儲WebView以進行離線瀏覽

的詳細原因:

  • 每一頁都被豐富的圖片,腳本和樣式。

  • 每個頁面大約0.5到1兆字節。

  • 一旦OnFinishedLoading Override被調用,它們將被保存。

  • 最好將它保存到SD卡,然後使用本地回購將其打開備份。

不知道如果我應該只是使用sql數據庫的webviews,或採取每個視圖,並寫出一個文件。

如果我做了後者,那麼最簡單的方法是什麼,所以我不必編寫完整的web爬蟲來獲取每個文件鏈接?

回答

7

爲了在Android上使用緩存,您需要提供HTML5清單文件以及HTML。

<!DOCTYPE html> 
<html lang="en" manifest="manifest.file"> 
<head> ... 

緩存機制將緩存清單文件中列出的任何條目到SQLite數據庫。請記住,數據庫是每個應用程序,而不是每個webview。 (我有很多問題)。

本文解釋了爲達到此目的需要採取的所有步驟。 http://web.archive.org/web/20140314001433/http://alex.tapmania.org/2010/11/html5-cache-android-webview.html

您可以使用此頁面做緩存一個hello世界的例子: http://html5demos.com/offlineapp

您可以保存在SD卡上的緩存,只要你的WRITE_EXTERNAL_STORAGE權限添加到應用程序清單。

祝你好運!

+1

我明白了,謝謝 - 這很有道理。現在沒有10 MB的限制嗎?我的意思是,我也在源代碼中看到:webView.getSettings()。setAppCacheMaxSize(1024 * 1024 * 8); 但是,這仍然會引起這樣的問題:它有多大?也許每頁只有10 MB?如果是這樣的情況下,它被緩存後,我只需使用websettings調用webview .Cacheonly是正確的? –

+2

如果webview緩存文件夾設置爲SD卡,這不會影響您的應用程序緩存文件夾。你甚至可以調用'webview.clearCache()'來檢查,SD卡上的數據庫不會被刪除。 – Daniel