获取缓存大小+清除缓存大小

xiaoxiao2021-02-28  9

case R.id.huancun: try { String s = size(); huancun.setText("当前缓存:"+s); } catch (Exception e) { e.printStackTrace(); } break; case R.id.clear: qingchu(SheZhi.this); String s = null; try { s = size(); } catch (Exception e) { e.printStackTrace(); } huancun.setText("当前缓存:"+s); break; } } private static void qingchu(Context context) { delete(context.getCacheDir()); if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { delete(context.getExternalCacheDir()); } } private static boolean delete(File cacheDir) { if (cacheDir != null && cacheDir.isDirectory()) { String[] children = cacheDir.list(); for (int i = 0; i < children.length; i++) { boolean success = delete(new File(cacheDir, children[i])); if (!success) { return false; } } } return cacheDir.delete(); } public String size()throws Exception{ long cachesize = getFolderSize(this.getCacheDir()); if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { cachesize += getFolderSize(this.getExternalCacheDir()); } return getFormatSize(cachesize); } private static long getFolderSize(File file)throws Exception { if (!file.exists()) { return 0; } long size = 0; try { File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { // 如果下面还有文件 if (files[i].isDirectory()) { size = size + getFolderSize(files[i]); } else { size = size + files[i].length(); } } } catch (Exception e) { e.printStackTrace(); } return size; } public static String getFormatSize(double size) { double kiloByte = size / 1024; if (kiloByte < 1) { return "0K"; } double megaByte = kiloByte / 1024; if (megaByte < 1) { BigDecimal result1 = new BigDecimal(Double.toString(kiloByte)); return result1.setScale(2, BigDecimal.ROUND_HALF_UP) .toPlainString() + "KB"; } double gigaByte = megaByte / 1024; if (gigaByte < 1) { BigDecimal result2 = new BigDecimal(Double.toString(megaByte)); return result2.setScale(2, BigDecimal.ROUND_HALF_UP) .toPlainString() + "MB"; } double teraBytes = gigaByte / 1024; if (teraBytes < 1) { BigDecimal result3 = new BigDecimal(Double.toString(gigaByte)); return result3.setScale(2, BigDecimal.ROUND_HALF_UP) .toPlainString() + "GB"; } BigDecimal result4 = new BigDecimal(teraBytes); return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB"; } ImageLoader清除缓存: public static void initImageLoader(Context context) { String s = context.getCacheDir().getPath()+"/SWJ"; //创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制),这个可以设定在APPLACATION里面,设置为全局的配置参数 ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(context) .threadPoolSize(3)//线程池内加载的数量 .denyCacheImageMultipleSizesInMemory()//.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation你可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) .diskCacheSize(50 * 1024 * 1024) .diskCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO) .diskCache(new UnlimitedDiskCache(new File(s))) //自定义缓存路径//.imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间 .build(); ImageLoader.getInstance().init(config);//全局初始化此配置 }
转载请注明原文地址: https://www.6miu.com/read-850348.html

最新回复(0)