1. android 怎么清理 XWalkView 缓存的LocalStorage
WebView的缓存可以分为页面缓存和数据缓存:
1,页面缓存: >指加载一个网页时的html、JS、CSS等页面或者资源数据。 >这些缓存资源是由于浏览器的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。 >缓存的索引存放在/data/data/package_name/databases下。 >文件存放在/data/data/package_name/cache/xxxwebviewcachexxx下。
2,数据缓存 : >数据缓存分为AppCache和DOM Storage两种。 >这些缓存资源是由开发者的直接行为而产生,所有的缓存数据都由开发者直接完全地掌控。 >Android中Webkit使用一个db文件来保存AppCache数据(my_path/ApplicationCache.db) >Android中Webkit会为DOM Storage产生两个文件(my_path/localstorage/http_h5.m.taobao.com_0.localstorage和my_path/localstorage/Databases.db)。
那既然了解了,怎么清除呢:
以下是网络出来的答案:
1.webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 2.context.deleteDatabase(“WebView.db”); 3.context.deleteDatabase(“WebViewCache.db”);4.webView.clearCache(true); 6.webView.clearFormData(); 7.getCacheDir().delete(); 8.用File的delete方法删除缓存文件夹;12345
老实说,对我的问题,没多大用,还是那句话,有事请Google
其实如果你只是想要每次用webView.loadUrl(url)加载新的页面显示,那么调用webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE)就可以实现了,并不需要去删除缓存文件什么的。
但是我的项目中使用了JavaScript的交互,而JavaScript的加载是通过头文件去获取加载的,所以每次我去获取新的页面的时候,虽然页面是新的,但是头文件中的数据还是old的,所以每次加载到的js都是old的。那么如何去做呢?
上面提到这个头文件是浏览器HTTP相应头去获取的,开发者只能间接的影响,并不能控制。
所以单独的webView.clearCache(true)是不能成功的,还需要清除webView的Cookie才行。
所以我最终的解决方法是在Activity的onDestroy()方法中添加如下代码:
@Overrideprotected void onDestroy() { super.onDestroy(); //清空所有Cookie
CookieSyncManager.createInstance(QzmobileApp.getContext()); //Create a singleton CookieSyncManager within a context
CookieManager cookieManager = CookieManager.getInstance(); // the singleton CookieManager instance
cookieManager.removeAllCookie();// Removes all cookies.
CookieSyncManager.getInstance().sync(); // forces sync manager to sync now
webView.setWebChromeClient(null);
webView.setWebViewClient(null);
webView.getSettings().setJavaScriptEnabled(false);
webView.clearCache(true);
}
2. android webview清除缓存
删这文件好像是需要Root权限的;
想清楚缓存试试下面的方法
private void removeCookie() {
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
CookieManager.getInstance().removeSessionCookie();
CookieSyncManager.getInstance().sync();
CookieSyncManager.getInstance().startSync();
}
3. 如何及时清理Android里WebView的内存,尤其是大量图片的内存
试试腾讯手机管家
打开腾讯手机管家——清理加速
腾讯手机管家可以清理垃圾文件、缓存文件、软件的残余、和多余的安装包。
然后小火箭还可以清理加速内存哟
打开腾讯手机管家——悬浮窗——小火箭
4. 安卓手机清楚缓存为什么清理不掉webview里面的东西
你换个管理软件试试。
推荐腾讯手机管家。
这款软件的管理能力挺出众的。而且用户群体大。
操作方面也不难,详细方法如下:
打开腾讯手机管家----清理加速
5. cordovawebview怎么清理缓存
安卓WebView在不同版本的安卓系统上表现参差不齐,这种不一致性使开发者非常头疼。虽然安卓4.4开始Google将安卓内置WebView内核更换为了Chromium,但还是有些bug(比如不支持WebSocket等,可能因为Chromium版本低了)。到安卓5.0开始,Chromium内核的WebView性能才有较大提升。
Crosswalk作为一款开源的web引擎,正是为了跨越这些障碍而生。Crosswalk采用最新Chromium内核,在Android 4.0及以上的系统中使用Crosswalk的Web应用程序在HTML5方面可以有一致的体验,同时和系统的整合交互方面(比如启动画面、权限管理、应用切换、社交分享等等)可以做到类似原生应用。现在Crosswalk已经成为众多知名HTML5平台和应用的推荐引擎,包括Google Mobile Chrome App、Intel XDK、Famo.us和Construct2等等,Cordova 4.0+也已经支持以插件形式集成Crosswalk。
如果你正在使用 Cordova-android 4.0.0+(注意不是Cordova 4.0.0+,Cordova 包含Cordova-android、Cordova-iOS等等),你可以添加下面的Crosswalk插件(仅支持安卓4.0及以上),使你的Cordova Android App获得飞一般的体验:
https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview
6. webview 怎么清理缓存文件
展开全部
当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹:
我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下.
WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源
7. android开发,用webview打开本地html网页时,怎么清除缓存
android开发,用webview打开本地html网页时,清除缓存的方法
在oncreate 加上 CookieSyncManager.createInstance(this); CookieSyncManager.getInstance().startSync(); CookieManager.getInstance().removeSessionCookie();
8. 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();
}