为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式在Android应用中清除缓存

以编程方式在Android应用中清除缓存

月关宝盒 2019-08-31 16:16:09
什么是以编程方式清除android应用程序中的缓存的正确方法。我已经使用了以下代码,但它看起来不适合我@Overrideprotected void onDestroy() {    // TODO Auto-generated method stub    super.onDestroy();    clearApplicationData();}public void clearApplicationData() {    File cache = getCacheDir();    File appDir = new File(cache.getParent());    if (appDir.exists()) {        String[] children = appDir.list();        for (String s : children) {            if (!s.equals("lib")) {                deleteDir(new File(appDir, s));                Log.i("EEEEEERRRRRRROOOOOOORRRR", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");            }        }    }}public static boolean deleteDir(File dir) {    if (dir != null && dir.isDirectory()) {        String[] children = dir.list();        for (int i = 0; i < children.length; i++) {            boolean success = deleteDir(new File(dir, children[i]));            if (!success) {                return false;            }        }    }    return dir.delete();}
查看完整描述

3 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

Kotlin有一个单行


context.cacheDir.deleteRecursively()


查看完整回答
反对 回复 2019-08-31
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

dhams的答案是正确的(经过多次编辑后),但是由于代码的许多编辑显示,很难自己编写用于删除目录(带子目录)的正确且健壮的代码。所以我强烈建议使用Apache Commons IO或其他一些为您执行此操作的API:


import org.apache.commons.io.FileUtils;


...


// Delete local cache dir (ignoring any errors):

FileUtils.deleteQuietly(context.getCacheDir());

PS:如果你使用它,也删除context.getExternalCacheDir()返回的目录。


为了能够使用Apache Commons IO,请将其添加到您的build.gradle文件中,dependencies部分内容如下:


compile 'commons-io:commons-io:2.4'


查看完整回答
反对 回复 2019-08-31
  • 3 回答
  • 0 关注
  • 629 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信