Android Glide获取缓存大小与清除缓存
2016-06-21 18:24
453 查看
GlideCatchSimple
SimpleDemo请看github
https://github.com/YaphetZhao/GlideCatchSimplehttps://github.com/YaphetZhao/GlideCatchSimple/blob/master/apk/app-debug.apk
Glide缓存Simple
缓存路径的指定缓存大小的获取
磁盘缓存清除(两种方法)
内存缓存清除
可clone之后查看使用Simple
Glide cache Simple.
The cache path specifiedThe 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
YaphetZhaoEmail: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
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置