美文网首页
Android清理缓存

Android清理缓存

作者: 加油小李 | 来源:发表于2020-10-17 21:00 被阅读0次

    public class DataCleanManager{

    /** * 

    获取缓存大小 * 

    @paramcontext * 

    @return* 

    @throwsException  */

    public static StringgetTotalCacheSize(Context context){

    long cacheSize =0;

    try{ 

     cacheSize = getFolderSize(context.getCacheDir());

    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 

         cacheSize += getFolderSize(context.getExternalCacheDir());

     }

     }catch(Exception e) { 

     e.printStackTrace(); 

     }

        return getFormatSize(cacheSize); 

     }

    /** * 清除缓存 * 

    @paramcontext  */

    public static void clearAllCache(Context context){ deleteDir(context.getCacheDir());

    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { deleteDir(context.getExternalCacheDir());

     } 

     }

    private static booleandeleteDir(File dir){

    if(dir !=null && dir.isDirectory()) {

     String[] children = dir.list();

    for(inti =0; i < children.length; i++) {

    booleansuccess = deleteDir(newFile(dir, children[i]));

    if(!success) {

    return false;

     } } }

    return

    dir.delete();

    }

    // 获取文件大小//Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据

    //Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据public static long getFolderSize(File file) throwsException{

    longsize =0;

    try{ File[] fileList = file.listFiles();

    for(inti =0; i < fileList.length; i++) {

    // 如果下面还有文件

    if(fileList[i].isDirectory()) {

     size = size + getFolderSize(fileList[i]);

     }else{ 

     size = size + fileList[i].length();

    } } }catch(Exception e) { 

     e.printStackTrace();

     }

    return size;

     }

    /** * 格式化单位 * @paramsize * @return*/

    public static StringgetFormatSize(doublesize){

    doublekiloByte = size /1024;

    if(kiloByte <1) {

    // return size + "Byte";return"0K"; }

    doublemegaByte = kiloByte /1024;if(megaByte <1) { 

     BigDecimal result1 =newBigDecimal(Double.toString(kiloByte));

    returnresult1.setScale(2, BigDecimal.ROUND_HALF_UP) .toPlainString() +"K"; }

    doublegigaByte = megaByte /1024;if(gigaByte <1) { 

     BigDecimal result2 =newBigDecimal(Double.toString(megaByte));returnresult2.setScale(2, BigDecimal.ROUND_HALF_UP) .toPlainString() +"M"; }

    doubleteraBytes = gigaByte /1024;if(teraBytes <1) { 

     BigDecimal result3 =newBigDecimal(Double.toString(gigaByte));

    return result3.setScale(2, BigDecimal.ROUND_HALF_UP) .toPlainString() +"GB"; 

     }

     BigDecimal result4 =newBigDecimal(teraBytes);

    return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() +"TB";

     }

    }

    相关文章

      网友评论

          本文标题:Android清理缓存

          本文链接:https://www.haomeiwen.com/subject/thbfmktx.html