安卓清理缓存怎么做(未完)

「查漏补缺,不断巩固」

《Android中如何清除缓存》

1、清除缓存涉及到的方法

一般来说,比较常有且容易混淆的有下面这两组:

  • getCacheDir()与getFilesDir()
  • getExternalCacheDir()与getExternalFilesDir()

先说短的:

getCacheDir()方法获取的路径是/data/data//cache

getFilesDir()方法获取的路径是/data/data//files

再说长的:

Android应用程序在运行过程中,一般是把数据保存在SDCard中的(如果有)。大部分应用的做法是在SD下创建一个文件夹,然后把数据保存在这个文件夹中。但是当该应用被卸载后,这些数据还留在原处,所以需要我们在进行卸载应用操作的同时,帮用户清理掉这些(买卖不成仁义在)。而getExternalCacheDir()与getExternalCacheDir()方法可以拿到应用在SD卡中建立的缓存地址。

getExternalFilesDir()方法获取的路径是/SDCard/Android/data/你的应用包名/files目录,一般用来放置需要长时间保存的数据。 

getExternalCacheDir()方法获取的路径是/SDCard/Android/data/你的应用包名/cache目录,一般用来放置临时缓存数据

2、实际代码

我们知道清除缓存一共分为两部:

  1. 拿到缓存地址
  2. 执行清除操作

让我们一个一个给出代码:

拿到缓存地址

public String getDiskCacheDir(Context context) {  
    String cachePath = null;  
    // 判断是否有SD卡
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())  
            || !Environment.isExternalStorageRemovable()) {  
        cachePath = context.getExternalCacheDir().getPath();  
    } else {  
        cachePath = context.getCacheDir().getPath();  
    }  
    return cachePath;  
}

执行清除操作

public static boolean deleteDir(File dir) {
        if (dir == null) return false;
        // 目录不存在返回true
        if (!dir.exists()) return true;
        // 不是目录返回false
        if (!dir.isDirectory()) return false;
        // 现在文件存在且是文件夹
        File[] files = dir.listFiles();
        if (files != null && files.length != 0) {
            for (File file : files) {
                if (file.isFile()) {
                    if (!deleteFile(file)) return false;
                } else if (file.isDirectory()) {
                    if (!deleteDir(file)) return false;
                }
            }
        }
        return dir.delete();
    }

当然,这篇里的清除缓存只是一个初步浅层的清理。


版权声明:本文为CSDN博主「黄元帅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Xiao_Spring/article/details/77145702


1、还是有许多疑问,这里只是区分并记住了这两对方法。

2、公司项目里只清理了  File appCacheDir = context.getCacheDir();  // /data/data/app_package_name/cache   // 《Android实现清理缓存功能》中清理了getCacheDir()和getExternalCacheDir()

3、对于存储,这个官方文档解释的很好 --> 《数据和文件存储概览》

未完待续

原文地址:https://www.cnblogs.com/touchmore/p/15477043.html