zoukankan      html  css  js  c++  java
  • 安卓清理缓存怎么做(未完)

    「查漏补缺,不断巩固」

    《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、对于存储,这个官方文档解释的很好 --> 《数据和文件存储概览》

    未完待续

  • 相关阅读:
    Vue常用语法
    Vue--过滤器、指令、插件
    使用vue-cli创建项目
    electron Ctrl+滚轮事件 放大缩小
    axios 处理超时问题 记录
    electron 清除所有cookie记录
    electron用默认浏览器打开链接的3种实现方式
    electron 不支持Ctrl+滚动条放大缩小,自己动手做了一个react组件
    排序算法记录
    umi react 集成 spreadjs
  • 原文地址:https://www.cnblogs.com/touchmore/p/15477043.html
Copyright © 2011-2022 走看看