您的位置:首页 > 移动开发 > Android开发

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

2016-06-21 18:24 453 查看

GlideCatchSimple

SimpleDemo请看github

https://github.com/YaphetZhao/GlideCatchSimple

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

Glide缓存Simple

缓存路径的指定

缓存大小的获取

磁盘缓存清除(两种方法)

内存缓存清除

可clone之后查看使用Simple

Glide cache Simple.

The cache path specified

The cache size

The disk cache (two ways)

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

<meta-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
android:name=".Application"
more...


About Me

YaphetZhao

Email:yaphetzhao@gmail.com

Email_CN:yaphetzhao@foxmail.com

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.
* <p>
* QQ:11613371
* GitHub:https://github.com/YaphetZhao
* Email:yaphetzhao@foxmail.com
* Email_EN:yaphetzhao@gmail.com
* <p>
* 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息