Android Glide获取缓存大小与清除缓存

GlideCatchSimple

SimpleDemo请看github

https://github.com/YaphetZhao/GlideCatchSimple
https://github.com/YaphetZhao/GlideCatchSimple/blob/master/apk/app-debug.apk

Glide缓存Simple

  1. 缓存路径的指定
  2. 缓存大小的获取
  3. 磁盘缓存清除(两种方法)
  4. 内存缓存清除

    • 可clone之后查看使用Simple

Glide cache Simple.

  1. The cache path specified
  2. The cache size
  3. The disk cache (two ways)
  4. Memory cache to clearMay

    • use Simple clone after check

GlideCatchUtil

获取Glide磁盘缓存大小

public String getCacheSize() {
    try {
        return getFormatSize(getFolderSize(new File(Application.getInstance().getCacheDir() + "/" + GlideCatchConfig.GLIDE_CARCH_DIR)));
    } catch (Exception e) {
        e.printStackTrace();
        return "获取失败";
    }
}

清除Glide磁盘缓存

public boolean cleanCatchDisk() {
    return deleteFolderFile(Application.getInstance().getCacheDir() + "/" + GlideCatchConfig.GLIDE_CARCH_DIR, true);
}

public boolean clearCacheDiskSelf() {
    try {
        if (Looper.myLooper() == Looper.getMainLooper()) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    Glide.get(Application.getInstance()).clearDiskCache();
                }
            }).start();
        } else {
            Glide.get(Application.getInstance()).clearDiskCache();
        }
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

AndroidMainfest.xml and GlideConfiguration.class

data
    android:name="com.yaphetzhao.glidecatchsimple.glide.GlideConfiguration"
    android:value="GlideModule" />

Application.class

public class Application extends android.app.Application {

    public static Application instance;

    public static Application getInstance() {
        return instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }

}

".Application"
    more...

About Me

YaphetZhao
Email:[email protected]
Email_CN:[email protected]
GitHub:http://github.com/YaphetZhao/
QQ:11613371
CSDN_Blog:http://blog.csdn.net/yaphetzhao

完整工具类代码

package com.yaphetzhao.glidecatchsimple.glide;

import android.os.Looper;
import android.util.Log;

import com.bumptech.glide.Glide;
import com.yaphetzhao.glidecatchsimple.Application;
import com.yaphetzhao.glidecatchsimple.glide.config.GlideCatchConfig;

import java.io.File;
import java.math.BigDecimal;

/**
 * Created by YaphetZhao
 * on 2016/12/19.
 * 

* QQ:11613371 * GitHub:https://github.com/YaphetZhao * Email:[email protected] * Email_EN:[email protected] *

* Glide缓存工具类 */ @SuppressWarnings("ResultOfMethodCallIgnored") public class GlideCatchUtil { private static GlideCatchUtil instance; public static GlideCatchUtil getInstance() { if (null == instance) { instance = new GlideCatchUtil(); } return instance; } // 获取Glide磁盘缓存大小 public String getCacheSize() { try { return getFormatSize(getFolderSize(new File(Application.getInstance().getCacheDir() + "/" + GlideCatchConfig.GLIDE_CARCH_DIR))); } catch (Exception e) { e.printStackTrace(); return "获取失败"; } } // 清除Glide磁盘缓存,自己获取缓存文件夹并删除方法 public boolean cleanCatchDisk() { return deleteFolderFile(Application.getInstance().getCacheDir() + "/" + GlideCatchConfig.GLIDE_CARCH_DIR, true); } // 清除图片磁盘缓存,调用Glide自带方法 public boolean clearCacheDiskSelf() { try { if (Looper.myLooper() == Looper.getMainLooper()) { new Thread(new Runnable() { @Override public void run() { Glide.get(Application.getInstance()).clearDiskCache(); } }).start(); } else { Glide.get(Application.getInstance()).clearDiskCache(); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } // 清除Glide内存缓存 public boolean clearCacheMemory() { try { if (Looper.myLooper() == Looper.getMainLooper()) { //只能在主线程执行 Glide.get(Application.getInstance()).clearMemory(); return true; } } catch (Exception e) { e.printStackTrace(); } return false; } // 获取指定文件夹内所有文件大小的和 private long getFolderSize(File file) throws Exception { long size = 0; try { File[] fileList = file.listFiles(); for (File aFileList : fileList) { if (aFileList.isDirectory()) { size = size + getFolderSize(aFileList); } else { size = size + aFileList.length(); } } } catch (Exception e) { e.printStackTrace(); } return size; } // 格式化单位 private static String getFormatSize(double size) { double kiloByte = size / 1024; if (kiloByte < 1) { return size + "Byte"; } 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"; } // 按目录删除文件夹文件方法 private boolean deleteFolderFile(String filePath, boolean deleteThisPath) { try { File file = new File(filePath); if (file.isDirectory()) { File files[] = file.listFiles(); for (File file1 : files) { deleteFolderFile(file1.getAbsolutePath(), true); } } if (deleteThisPath) { if (!file.isDirectory()) { file.delete(); } else { if (file.listFiles().length == 0) { file.delete(); } } } return true; } catch (Exception e) { e.printStackTrace(); return false; } } }

完整代码请看git

https://github.com/YaphetZhao/GlideCatchSimple

我的更多git项目

DropDownMultiPager
仿淘宝商品详情页下拉足迹Demo
https://github.com/YaphetZhao/DropDownMultiPager

PearGreenDAO
安卓GreenDao使用例子 Android GreenDAO Simple
https://github.com/YaphetZhao/PearGreenDAO

  • 欢迎fork,感谢star

你可能感兴趣的:(Android)