如何及时清理Android里WebView的内存,尤其是大量图片的内存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何及时清理Android里WebView的内存,尤其是大量图片的内存相关的知识,希望对你有一定的参考价值。

参考技术A 试试腾讯手机管家
打开腾讯手机管家——清理加速
腾讯手机管家可以清理垃圾文件、缓存文件、软件的残余、和多余的安装包。
然后小火箭还可以清理加速内存哟
打开腾讯手机管家——悬浮窗——小火箭

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();
参考技术A 手机清理缓存的话 其实不需要在设置的应用程序里 一个个的清理的
可以给手机下载个腾讯手机管家的,之后用管家清理下就可以的
管家---健康优化---深度清理
管家的流量监控、空间清理、都是非常的好用的
流量监控:实时统计当月流量,防止超额。
深度清理:清理垃圾缓存文件,软件卸载残余文件及多余安装包。
空间清理:对sd卡进行一键分析,清除垃圾文件、安装包、音频等。
参考技术B webview缓存自动会清理,除非你自己本地化。追问

麻烦您在讨教以一下!我得安卓工程服务端的ip我修改了,可是加载的时候还是以前的ip是怎么回事啊。

追答

最好说些项目和具体的实现方法 你这么说不怎么明白

参考技术C 把缓存文件删了就好了

以上是关于如何及时清理Android里WebView的内存,尤其是大量图片的内存的主要内容,如果未能解决你的问题,请参考以下文章

android 读取WebView缓存及清理WebView缓存

(转)增加定时检测linux占用内存,及时清理功能

如何清理释放Android手机内存空间

在Android中调用多个WebView时如何控制内存使用?

安卓系统手机内存空间不足的清理方法

WebView自动缓存-清除缓存