android WebView(六)下載和緩衝

來源:互聯網
上載者:User

標籤:android   webview   html   javascript   緩衝機制   


WebView下載有時候你所載入的頁面有下載連結,如果你需要響應點擊後下載的功能則需要進行如下處理:
webView.setDownloadListener(new DownloadListener() {@Overridepublic void onDownloadStart(String url, String userAgent,String contentDisposition, String mimetype,long contentLength) {if (url != null && url.startsWith("http")){startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));}}});

上面代碼是調用系統的瀏覽器進行下載的,無論如何我們通過設定DownloadListener可以監聽到下載的事件,並且擷取到要去下載的連結url,所以我們完全可以自己去開啟線程自己去下載,具體怎麼下載我就不多說了。

WebView緩衝如果WebView每次請求都重新載入資料的話,這樣就會很耗流量和時間。WebView提供了緩衝機制,緩衝在data/data下的的檔案結構如下:我們請求的Url記錄是儲存在webviewCache.db裡,而url的內容是儲存在webviewCache檔案夾下。


WebView中存在著兩種緩衝:網頁資料緩衝(DOM Storage)、H5緩衝(即AppCache)。

AppCache使我們能夠有選擇的緩衝web瀏覽器中所有的東西,從頁面、圖片到指令碼、css等等。尤其在涉及到應用於網站的多個頁面上的CSS和JavaScript檔案的時候非常有用。其大小目前通常是有限制的。在Android上需要手動開啟(setAppCacheEnabled),並設定路徑(setAppCachePath)和容量(setAppCacheMaxSize)Android中Webkit使用一個db檔案來儲存AppCache資料(my_path/ApplicationCache.db)

DOMStorage儲存一些簡單的用key/value對資料。根據作用範圍的不同,有Session Storage和Local Storage兩種,分別用於會話層級的儲存(頁面關閉即消失)
和本地化儲存(除非主動刪除,否則資料永遠不會到期)。在Android中可以手動開啟DOM Storage(setDomStorageEnabled),設定儲存路徑(setDatabasePath)
Android中Webkit會為DOM Storage產生兩個檔案(my_path/localstorage/http_h5.m.taobao.com_0.localstorage和my_path/localstorage/Databases.db)。

5種緩衝模式
LOAD_CACHE_ONLY:  不使用網路,唯讀取本機快取資料
LOAD_DEFAULT:  根據cache-control決定是否從網路上取資料。
LOAD_CACHE_NORMAL: API level 17中已經廢棄, 從API level 11開始作用同LOAD_DEFAULT模式
LOAD_NO_CACHE: 不使用緩衝,只從網路擷取資料.
LOAD_CACHE_ELSE_NETWORK,只要本地有,無論是否到期,或者no-cache,都使用緩衝中的資料。
如:www.taobao.com的cache-control為no-cache,在模式LOAD_DEFAULT下,無論如何都會從網路上取資料,如果沒有網路,就會出現錯誤頁面;在LOAD_CACHE_ELSE_NETWORK模式下,無論是否有網路,只要本地有緩衝,都使用緩衝。本地沒有緩衝時才從網路上擷取。

www.360.com.cn的cache-control為max-age=60,在兩種模式下都使用本機快取資料。


android WebView(六)下載和緩衝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.