清除WebView的缓存

wai2014kuaile 2011-03-26 11:51:19
File file = CacheManager.getCacheFileBaseDir();
if(file.exists()){
file.delete();
}
webview.clearCache(true);
webview.clearHistory();
webview.clearFormData();
context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");
全用上了都不起作用,Webview每次还会加载上次的页面
请高手帮忙解决一下这个问题
...全文
9017 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sammy_capgemini 2013-08-10
  • 打赏
  • 举报
回复
对mWebView设置如下: mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 再文章展示之后,切换下一篇之前,做如下处理: mWebView.loadDataWithBaseURL(null, "","text/html", "utf-8",null); 测试已通过
wyc18301514722 2013-06-14
  • 打赏
  • 举报
回复
你这个问题解决了吗?
yqayaoyao 2013-06-06
  • 打赏
  • 举报
回复
WebView wv = appView; wv.loadDataWithBaseURL(null, "", "text/html", "utf-8", null); wv.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); wv.clearCache(true); wv.destroyDrawingCache();
做个明白人 2012-08-06
  • 打赏
  • 举报
回复
很郁闷啊。我也有类似的问题哦
居家懒人 2012-04-11
  • 打赏
  • 举报
回复
我也是这样的问题,页面是都放到设备本地assets目录的。每次测试时即使卸载了apk,下次debug发现web加载的页面还他妈是上次的。每次都要两次才行。
chenmeng824 2011-08-11
  • 打赏
  • 举报
回复
可以用webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);可以解决缓存问题,刚测试可用
chenshantie 2011-07-27
  • 打赏
  • 举报
回复
顶起,盼解啊
virusswb 2011-07-27
  • 打赏
  • 举报
回复
m_webview.loadDataWithBaseURL(null, result,"text/html", "utf-8",null);
可以解决问题,不怕缓存用完,不用清空缓存。
clearcache
clearhistory
都不管用
wai2014kuaile 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cshoney 的回复:]
请问楼主的问题解决了吗?
我也想知道答案
谢谢
[/Quote]
没有 ,在后端做了注销功能
cshoney 2011-06-29
  • 打赏
  • 举报
回复
请问楼主的问题解决了吗?
我也想知道答案
谢谢
wai2014kuaile 2011-03-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chinalaohe 的回复:]
网上有的:

  第一步:新建一个Android工程命名为WebViewCacheDemo.目录结构如下:
  第二步:在assets目录下新建一个html文件,命名为index.html。
  第三步:修改main.xml布局文件一个WebView控件一个Button(点击加载缓存图片用)。
  

  
  <?xmlversion="1.0"encoding="utf-8"?……
[/Quote]

貌似跟我的问题刚好相反啊
DrSmart 2011-03-26
  • 打赏
  • 举报
回复
直接删除/data/data/pkg name/xxx/中的目录就行了,xxx是缓存的数据库临时文件等
chinalaohe 2011-03-26
  • 打赏
  • 举报
回复
网上有的:

  第一步:新建一个Android工程命名为WebViewCacheDemo.目录结构如下:
  第二步:在assets目录下新建一个html文件,命名为index.html。
  第三步:修改main.xml布局文件一个WebView控件一个Button(点击加载缓存图片用)。
  

  
  <?xmlversion="1.0"encoding="utf-8"?>
  <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <WebView
  android:id="@+id/webview"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  />
  <Button
  android:id="@+id/button"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="从缓存里读取图片"
  />
  </LinearLayout>

  第四步:修改主核心程序EOE.android.java,这里我只加载了index.html文件,按钮事件暂时没写,代码如下:

  
  packageEOE.android;
  importandroid.app.Activity;
  importandroid.os.Bundle;
  importandroid.view.View;
  importandroid.view.View.OnClickListener;
  importandroid.webkit.WebView;
  importandroid.widget.Button;
  publicclassWebViewCacheDemoextendsActivity{
  privateWebViewmWebView;
  //privateButtonmButton;
  privatestaticfinalStringurl="file:///android_asset/index.html";
  @Override
  publicvoidonCreate(BundlesavedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  mWebView=(WebView)findViewById(R.id.webview);
  mWebView.loadUrl(url);
  //mButton=(Button)findViewById(R.id.button);
  //mButton.setOnClickListener(listener);
  }
  }

  第五步:在AndroidMainifest.xml文件中加访问网络的权限:


< uses-permission android:name="android.permission.INTERNET" />
wai2014kuaile 2011-03-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 drsmart 的回复:]
直接删除/data/data/pkg name/xxx/中的目录就行了,xxx是缓存的数据库临时文件等
[/Quote]
这样的话程序会报错:不能打开数据库的错(webview.db和webviewCache.db)
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在 Android 开发中,WebView 是一个功能强大的组件,它允许开发者在应用内加载网页内容。然而,随着用户浏览网页数量的增加,WebView 会积累大量缓存数据,这可能会占用过多存储空间,甚至影响应用性能。因此,掌握如何清除 WebView 缓存是非常重要的。 以下是一个名为 clearCacheFolder 的函数示例,用于删除指定目录中过期的缓存文件。该函数通过递归遍历目录中的文件,并根据文件的最后修改时间与当前时间的差值来判断文件是否过期。如果文件的最后修改时间早于当前时间减去指定天数(numDays)对应的毫秒数,则删除该文件。代码如下: 此外,我们还可以通过设置 WebView缓存模式来控制其缓存行为。如果希望优先使用缓存,可以设置为 LOAD_CACHE_ELSE_NETWORK,这样在无网络连接时仍能显示之前缓存的页面。相反,如果不想使用缓存,可以设置为 LOAD_NO_CACHE,代码如下: 在应用退出时,通常会在 onDestroy() 或 onPause() 方法中进行清理工作,以确保下次启动应用时缓存已被清空。以下是一段在退出应用时删除缓存文件的代码: 这段代码会删除 WebView 使用的两个数据库文件 webview.db 和 webviewCache.db,以及缓存文件夹中的所有文件。需要注意的是,CacheManager.getCacheFileBaseDir() 通常返回 WebView缓存目录,但在实际使用中需要根据具体项目配置来确定。 总之,Android 中的 WebView 缓存管理包括设置缓存模式、手动清理缓存文件以及在应用生命周期中适当地删除缓存数据。通过这些方法,开发者可以有效控制 WebView缓存行为,优化应用性能,

80,470

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧