Android WebView 緩存詳解
Android WebView 緩存詳解
一. 兩種緩存類型:
頁面緩存:加載一個(gè)網(wǎng)頁時(shí)的html、JS、CSS等頁面或者資源數(shù)據(jù),這些緩存資源是由于瀏覽器 的行為而產(chǎn)生,開發(fā)者只能通過配置HTTP響應(yīng)頭影響瀏覽器的行為才能間接地影響到這些緩存數(shù)據(jù)。 而緩存的索引放在:/data/data//databases 對(duì)應(yīng)的文件放在:/data/data/package_name/cache/webviewCacheChromunm下
數(shù)據(jù)緩存:分為AppCache和DOM Storage兩種 我們開發(fā)者可以自行控制的就是這些緩存資源
AppCache:
我們能夠有選擇的緩沖web瀏覽器中所有的東西,從頁面、圖片到腳本、css等等。 尤其在涉及到應(yīng)用于網(wǎng)站的多個(gè)頁面上的CSS和JavaScript文件的時(shí)候非常有用。其大小目前通常是5M。 在Android上需要手動(dòng)開啟(setAppCacheEnabled),并設(shè)置路徑(setAppCachePath)和容量 (setAppCacheMaxSize),而android中使用ApplicationCache.db來保存AppCache數(shù)據(jù)!
DOM Storage:
存儲(chǔ)一些簡(jiǎn)單的用key/value對(duì)即可解決的數(shù)據(jù),根據(jù)作用范圍的不同,有Session Storage和Local Storage兩種,分別用于會(huì)話級(jí)別的存儲(chǔ)(頁面關(guān)閉即消失)和本地化存儲(chǔ)(除非主動(dòng) 刪除,否則數(shù)據(jù)永遠(yuǎn)不會(huì)過期)在Android中可以手動(dòng)開啟DOM Storage(setDomStorageEnabled), 設(shè)置存儲(chǔ)路徑(setDatabasePath)Android中Webkit會(huì)為DOMStorage產(chǎn)生兩個(gè)文件(my_path/localstorage/http_blog.csdn.net_0.localstorage和my_path/Databases.db)
二、WebView的5種緩存模式:
LOAD_NO_CACHE: 不使用緩存,只從網(wǎng)絡(luò)獲取數(shù)據(jù)
LOAD_CACHE_ONLY: 不使用網(wǎng)絡(luò),只讀取本地緩存數(shù)據(jù)
LOAD_DEFAULT: 根據(jù)cache-control決定是否從網(wǎng)絡(luò)上取數(shù)據(jù)
LOAD_CACHE_NORMAL: API level 17中已經(jīng)廢棄, 從API level 11開始作用同LOAD_DEFAULT模式
LOAD_CACHE_ELSE_NETWORK,只要本地有,無論是否過期,或者no-cache,都使用緩存中的數(shù)據(jù)
三、WebView緩存模式的設(shè)置:
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);//或其他模式
根據(jù)需求緩存策略可為:判斷是否有網(wǎng)絡(luò) 有:使用LOAD_DEFAULT/LOAD_NO_CACHE
無:使用LOAD_CACHE_ELSE_NETWORK
四、刪除緩存數(shù)據(jù):
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.clearCache(true); webView.clearHistory(); webView.clearFormData(); /** * 清除WebView緩存 */ public void clearWebViewCache(){ //清理Webview緩存數(shù)據(jù)庫 try { deleteDatabase("webview.db"); deleteDatabase("webviewCache.db"); } catch (Exception e) { e.printStackTrace(); } //WebView 緩存文件 File appCacheDir = new File(getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME); Log.e(TAG, "appCacheDir path="+appCacheDir.getAbsolutePath()); File webviewCacheDir = new File(getCacheDir().getAbsolutePath()+"/webviewCache"); Log.e(TAG, "webviewCacheDir path="+webviewCacheDir.getAbsolutePath()); //刪除webview 緩存目錄 if(webviewCacheDir.exists()){ deleteFile(webviewCacheDir); } //刪除webview 緩存 緩存目錄 if(appCacheDir.exists()){ deleteFile(appCacheDir); } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Android WebView自定義長(zhǎng)按選擇實(shí)現(xiàn)收藏/分享選中文本功能
- Android實(shí)現(xiàn)webview實(shí)例代碼
- Android 5.1 WebView內(nèi)存泄漏問題及快速解決方法
- Android中WebView實(shí)現(xiàn)點(diǎn)擊超鏈接啟動(dòng)QQ的方法
- Android如何讓W(xué)ebView中的HTML5頁面實(shí)現(xiàn)視頻全屏播放
- Android中解決WebView上下滑動(dòng)監(jiān)聽問題
- Android中webview與JS交互、互調(diào)方法實(shí)例詳解
- Android WebView或手機(jī)瀏覽器打開連接問題解決辦法總結(jié)
- Android編程使用WebView實(shí)現(xiàn)與Javascript交互的方法【相互調(diào)用參數(shù)、傳值】
- Android WebView的詳解及實(shí)例
相關(guān)文章
Android View的事件分發(fā)機(jī)制深入分析講解
事件分發(fā)從手指觸摸屏幕開始,即產(chǎn)生了觸摸信息,被底層系統(tǒng)捕獲后會(huì)傳遞給Android的輸入系統(tǒng)服務(wù)IMS,通過Binder把消息發(fā)送到activity,activity會(huì)通過phoneWindow、DecorView最終發(fā)送給ViewGroup。這里就直接分析ViewGroup的事件分發(fā)2023-01-01Android開發(fā)使用UncaughtExceptionHandler捕獲全局異常
本文主要介紹在Android開發(fā)中使用UncaughtExceptionHandler捕獲全局異常,需要的朋友可以參考下。2016-06-06Android實(shí)現(xiàn)本地上傳圖片并設(shè)置為圓形頭像
我們?cè)谧鲰?xiàng)目的時(shí)候會(huì)用到圓形的圖片,比如用戶頭像,類似QQ。用戶在用QQ更換頭像的時(shí)候,上傳的圖片都是矩形的,但顯示的時(shí)候確是圓形的。那么這是如何實(shí)現(xiàn)的呢,下面我們就來探討下吧。2015-05-05Android SD卡上文件操作及記錄日志操作實(shí)例分析
這篇文章主要介紹了Android SD卡上文件操作及記錄日志操作的方法,涉及Android針對(duì)SD卡與文件操作的相關(guān)技巧,需要的朋友可以參考下2016-01-01Android用StaticLayout實(shí)現(xiàn)文字轉(zhuǎn)化為圖片效果(類似長(zhǎng)微博發(fā)送)
這篇文章主要給大家介紹了關(guān)于Android利用StaticLayout實(shí)現(xiàn)文字轉(zhuǎn)化為圖片效果,實(shí)現(xiàn)的效果類似我們常見的長(zhǎng)微博效果,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。2017-08-08Unity3D游戲引擎實(shí)現(xiàn)在Android中打開WebView的實(shí)例
這篇文章主要介紹了Unity3D游戲引擎在Android中打開WebView的實(shí)例,需要的朋友可以參考下2014-07-07Android項(xiàng)目實(shí)戰(zhàn)之百度地圖地點(diǎn)簽到功能
這篇文章主要介紹了Android項(xiàng)目實(shí)戰(zhàn)之百度地圖地點(diǎn)簽到功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Android實(shí)現(xiàn)應(yīng)用內(nèi)置語言切換功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)應(yīng)用內(nèi)置語言切換功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02