當前位置:首頁 » 硬碟大全 » 安卓自動緩存webview
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

安卓自動緩存webview

發布時間: 2023-01-12 05:18:52

1. android中 如何清理webview緩存

一、清除cookie

public static void clearCookies(Context context) {
// Edge case: an illegal state exception is thrown if an instance of
// CookieSyncManager has not be created. CookieSyncManager is normally
// created by a WebKit view, but this might happen if you start the
// app, restore saved state, and click logout before running a UI
// dialog in a WebView -- in which case the app crashes
@SuppressWarnings("unused")
CookieSyncManager cookieSyncMngr =
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
}

這是facebook sdk的源碼,我不知道第一句到底起了什麼作用?

二、清除webview緩存,查看root過的手機data下的文件,會發現有這個東西:webview命名的東西

刪除保存於手機上的緩存.

// clear the cache before time numDays
private int clearCacheFolder(File dir, long numDays) {
int deletedFiles = 0;
if (dir!= null && dir.isDirectory()) {
try {
for (File child:dir.listFiles()) {
if (child.isDirectory()) {
deletedFiles += clearCacheFolder(child, numDays);
}
if (child.lastModified() < numDays) {
if (child.delete()) {
deletedFiles++;
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
return deletedFiles;
}

打開關閉使用緩存
//優先使用緩存:
WebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

//不使用緩存:
WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

在退出應用的時候加上如下代碼
File file = CacheManager.getCacheFileBaseDir();
if (file != null && file.exists() && file.isDirectory()) {
for (File item : file.listFiles()) {
item.delete();
}
file.delete();
}

context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");

發現這個問題,一個朋友在iteye上問的:

Android的CookieManager只提供了removeAllCookies方法,用來刪除所有的cookie,有什麼辦法只刪除和特定url關聯的cookie呢?本來打算使用setCookie(url, value)將指定url關聯的cookie設為空串,但試了一下發現這個方法只是在已有的基礎上繼續添加cookie,並不能重置已有的cookie。

有朋友給打答案:

/**
* 同步一下cookie
*/
public static void synCookies(Context context, String url) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();//移除
cookieManager.setCookie(url, cookies);//指定要修改的cookies
CookieSyncManager.getInstance().sync();
}

2. 安卓開發 webview為什麼自動緩存

webview 會將我們瀏覽過的網頁url已經網頁文件(css、圖片、js等)保存到資料庫表中
可以設置WebView 緩存模式:
建議緩存策略為,判斷是否有網路,有的話,使用LOAD_DEFAULT,無網路時,使用LOAD_CACHE_ELSE_NETWORK

3. android開發,用webview打開本地html網頁時,怎麼清除緩存

/**
* 清除WebView緩存

*/
public void clearWebViewCache() {

/**清理Webview緩存資料庫,緩存文件由程序自動生成

* /data/data/package_name/database/webview.db

* /data/data/package_name/database/webviewCache.db

**/
try {
//因為他們都是文件,所以可以用io方式刪除,具體方法可以自己寫
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");

} catch (Exception e) {

e.printStackTrace();
}

//WebView 緩存文件
File webviewCacheDir = new File(APP_CACAHE_DIRNAME);

//刪除webview 緩存目錄

if (webviewCacheDir.exists()) {

//具體的方法自己寫

deleteFile(webviewCacheDir);
}
}

4. android webview 怎麼使用本地緩存

android webview使用本地緩存的話,思路如下:
定義一個離線下載的服務Service
啟動後台服務Service來執行非同步下載
存儲到本地資料庫中
每一次載入url之前,先判斷資料庫是否存在緩存內容
5.如果存在緩存,優先載入本地緩存,如果不存在,才執行聯網請求

5. 如何讀寫Android的WebView緩存文件

簡單步驟解答:

  1. 新建一個Android工程命名為WebViewCache。

  2. 在assets目錄下新建一個html文件,命名為index.html。

  3. 修改主核心程序WebViewCacheDemo.java,這里我只載入了index.html文件。

  4. 在AndroidMainifest.xml文件中加訪問網路的許可權。

請求的url記錄是保存在webviewCache.db,而url的內容是保存在webviewCache文件夾下。

6. WebView自動緩存-清除緩存

iOS的Webview載入HTML時會自動緩存JS、CSS等文件,當下次載入HTML時會根據請求的緩存策略是否使用緩存本地的JS和CSS,如果本地有緩存,那麼直接返回本地資源(判斷是否過期);如果沒有本地緩存則向伺服器請求地址。
1、NSURLRequestCachePolicy 指定緩存邏輯。URL載入系統提供了一個磁碟和內存混合的緩存,來響應網路請求。
2、 = 0 默認緩存策略
3、 不使用本地緩存數據
4、 直接載入源數據
5、 指定已存的緩存數據應該用來響應請求,不管它的生命時長和過期時間。
6、 指定已存的緩存數據用來滿足請求,不管生命時長和過期時間。

也可以使用這個方法清除單個請求的緩存

之前遇到一種情況,app端載入伺服器一個網頁,js調用http介面沒有傳參數報錯了,服務端更新之後安卓重新載入沒有問題,iOS端一直載入都會報錯,卸載重裝之後就沒問題了。
最後發現在沙盒的Caches目錄中找到一個WebKit的文件夾,把這個文件夾刪了也沒問題

借鑒:
html開發變態的靜態資源緩存與更新
iOS開發:解決UIWebView自動緩存導致頁面不可刷新問題
iOS html5使用緩存並及時更新方案總結

7. 安卓手機清楚緩存為什麼清理不掉webview裡面的東西

你換個管理軟體試試。

推薦騰訊手機管家。

這款軟體的管理能力挺出眾的。而且用戶群體大。

操作方面也不難,詳細方法如下:

打開騰訊手機管家----清理加速