美文网首页
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