關於Android之WebView載入網頁快取和清除問題
無獨有偶,Android開發中也需要一個網頁快取機制,自然網路上成熟的案例舉不勝舉,比如:
一、設定快取:
private static final String APP_CACAHE_DIRNAME = "/webcache";
private void initWebView() { mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //設定 快取模式 // 開啟 DOM storage API 功能 mWebView.getSettings().setDomStorageEnabled(false); //開啟 database storage API 功能 mWebView.getSettings().setDatabaseEnabled(true); String cacheDirPath = getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME; // String cacheDirPath = getCacheDir().getAbsolutePath()+Constant.APP_DB_DIRNAME; Log.i(TAG, "cacheDirPath="+cacheDirPath); //設定資料庫快取路徑 // mWebView.getSettings().setDatabasePath(cacheDirPath); //設定 Application Caches 快取目錄 mWebView.getSettings().setAppCachePath(cacheDirPath); //開啟 Application Caches 功能 mWebView.getSettings().setAppCacheEnabled(true); }
效果:瀏覽過網頁後斷網,再次開啟,依然能看到載入的網頁,即快取機制;
二、清除快取:
public void clearWebViewCache1(){ //清理Webview快取資料庫 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); } } /** * 遞迴刪除 檔案/資料夾 * * @param file */ public void deleteFile(File file) { Log.i(TAG, "delete file path=" + file.getAbsolutePath()); if (file.exists()) { if (file.isFile()) { file.delete(); } else if (file.isDirectory()) { File files[] = file.listFiles(); for (int i = 0; i < files.length; i++) { deleteFile(files[i]); } } file.delete(); } else { Log.e(TAG, "delete file no exists " + file.getAbsolutePath()); } }
效果:再次開啟網頁檢視快取的網頁,應該是不會再載入了,可是,可是,可是,現在的情況是依然能載入,失敗,失敗,失敗;
解決方案:
1、各種搜尋,各種測試,就是無法刪除快取資料,無語後開始英文搜尋;
2、在某一stackoverflow回覆區找到如下解決方案,最終完美破解:
public void clearWebViewCache(){ File file = this.getApplicationContext().getCacheDir().getAbsoluteFile(); deleteFile(file); }
/** * 遞迴刪除 檔案/資料夾 * * @param file */ public void deleteFile(File file) { Log.i("TAG", "delete file path=" + file.getAbsolutePath()); if (file.exists()) { if (file.isFile()) { file.delete(); } else if (file.isDirectory()) { File files[] = file.listFiles(); for (int i = 0; i < files.length; i++) { deleteFile(files[i]); } } file.delete(); } else { Log.e("TAG", "delete file no exists " + file.getAbsolutePath()); } }
最終效果:離線快取的網頁已沒有相關資料了,一個教訓,還是去英文資料比較實在高效!
相關推薦
關於Android之WebView載入網頁快取和清除問題
無獨有偶,Android開發中也需要一個網頁快取機制,自然網路上成熟的案例舉不勝舉,比如: 一、設定快取: private static final String APP_CACAHE_DIRNA
Android使用WebView載入網頁
在AndroidManifest.xml設定訪問網路許可權: <span style="font-size:24px;"><span style="font-size:24px;"
Android的WebView載入網頁的幾種方式及網路異常處理
1.載入本地assert目錄下檔案(error.html) webcontent.loadUrl(" file:///android_asset/error.html "); 2.載入網路url(http://www.csdn.com) webcontent.loadUrl
Android之 -WebView實現離線快取閱讀
前言 本篇部落格要實現的是一個離線下載和離線閱讀的功能,這是很多閱讀類app都常見的一個功能,典型的應用就是網易新聞。什麼是離線下載?其實這個概念是比較模糊,是離線之後下載呢,還是下載之後離線,但稍微有點腦子的人都知道沒有網路之後怎麼下載呢?所以離線下載這個功能是”在有網路的情況下,把資源下載到本地“,離線
Android使用WebView載入網頁遮蔽系統瀏覽器的方法
在onCreate()方法裡: WebView myWebView=(WebView)findViewById(R.id.webview); myWebView.setWebViewClient(new WebViewClient() { publicboolean
android中WebView載入網頁設定進度條
我們平時在進行安卓開發使用到webview載入網頁時,我們不能準確瞭解網頁的載入進度,因此為了提高使用者體驗,我們在webview中加入進度條顯示載入進度。 程式預覽介面: 一、主介面xml佈局檔案 <LinearLayout xmlns:android="ht
混合開發之webView載入html,android 和 html之間進行資料互動
現在混合開發比較普遍了,其實早就該學學了,只限於自己對html不是很熟,搭的介面太醜了,哈哈… 今天寫Demo的需求是這樣的 1、在一個介面裡,半面html,半面android原生控制元件。 2、點選html傳送html的資料給android ,andro
Android: WebView載入網頁的幾種方式及網路異常處理
1.載入本地assert目錄下檔案(error.html) webcontent.loadUrl(" file:///android_asset/error.html "); 2.載入網路url(http://www.csdn.com) webcontent.loadUrl(" http://www.csd
android:webview載入網頁速度很慢的的究極解決方案
Android客戶端中混搭HTML頁面,會出現雖然HTML內容載入完成,標題也正常顯示,但是整個網頁需要等到近5秒(甚至更多)時間才會顯示出來。研究了很久,搜遍了國外很多網站,也看過PhoneGap的程式碼,一直無解。 一般人堆WebView的加速,都是建
android中的webview載入網頁只想顯示部分內容改怎麼做
@Override public void onPageFinished(WebView view, String url) { if(url!=null && url.contains("/p/resource/weapon/iProductID/39")){ S
android webview載入網頁按後退鍵黑屏一下問題的解決方案
出現這個問題剛開始還真是一頭霧水,不知道怎麼解決,後來跟同事一交流,發現凡是這種問題,很大一部分原因是application的style,或者activity的style設定問題,比如啟動頁黑屏問題也
Android WebView載入網頁,實現前進、後退、重新整理、超連結
你也可以檢視我的其他同類文章,也會讓你有一定的收貨! 先在要顯示網頁的佈局檔案中宣告WebView 在Activity中例項化WebView 呼叫WebView的loadUrl( )方法,設定WevView要顯示的網頁 為了讓WebView能夠響應超連結
android webview 載入網頁顯示不完整解決辦法
看有沒有這個屬性: webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); 註釋掉,就ok了; settings.setLayoutAlgor
Android Webview載入網頁內容不全
之前在開發時,要求用webview載入一個url展示活動頁面,並無其他需求,很簡單的一個需求。然後遇到一個坑——載入的網頁內容不全,花了幾個小時,試了網上的一些方法並沒有效果。 最後詢問前端的同學得知,這個網頁用了動態載入,並不會在第一次載入時就載入全部內容。
Android WebView載入網頁,實現前進 後退 重新整理 超連結
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
android通過webView載入第三方h5應用,無法載入圖片和播放視訊的解決方法
只需給webview的配置中加上下面這段程式碼即可解決 這是Android5.0 WebView中Http和Https混合問題,在Android5.0 以及以上的系統,當WebView載入的連結為Https開頭,但是連結裡面的內容,比如圖片為Http連結,這時
Android控制元件 WebView載入網頁
新增控制元件<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi
android:webview獲取網頁登陸賬號和密碼
使用webview獲取html頁面資訊 需求:抓取webview開啟的頁面中登陸資訊,簡單點說就是獲取第三方的賬號和密碼。(咋一想,這尼瑪有點坑啊,獲取別人的資訊,怎麼都不太好吧。但是也得實現呀。。。) 本文將以抓取百度賬號資訊為例。(這尼瑪也是一個坑。。。
Android的webview載入本地html、本apk內html和遠端URL
1.佈局檔案片段:res-layout <WebView android:id="@+id/Toweb" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 2.Ja
Android控制元件之WebView(網頁調轉回APP)
問題來源:網頁跳轉回應用 APP開啟網頁,網頁放置在伺服器中(例如,APP開啟百度網頁),開啟網頁之後在某一時刻需要從網頁在跳轉回到APP。 實現原理:使用URI再加上Intent來實現。 URI介紹: 就Android平臺而言,URI主要分三個部分:s