安卓内存清理之Glide

项目中使用了glide加载图片
设置中要求能够清理用户缓存
计算缓存大小:
new GetDiskCacheSizeTask().execute(new File(context.getCacheDir(),DiskCache.Factory.DEFAULT_DISK_CACHE_DIR));
//开启Task任务进行计算
class GetDiskCacheSizeTask extends AsyncTask<File, Long, Long> {
@Override
protected void onPreExecute() {
iView.setCache("计算中...");
}
protected void onProgressUpdate(Long... values) { /* onPostExecute(values[values.length - 1]); */ }
protected Long doInBackground(File... dirs) {
try {
long totalSize = 0;
for (File dir : dirs) {
publishProgress(totalSize);
totalSize += calculateSize(dir);
}
return totalSize;
} catch (RuntimeException ex) {
final String message = String.format("Cannot get size of %s: %s", Arrays.toString(dirs), ex);
}
return 0L;
}

    @Override
    protected void onPostExecute(Long size) {
        String sizeText = Formatter.formatFileSize(context, size);
        iView.setCache(sizeText);
    }
}

计算代码:
private long calculateSize(File dir) {
if (dir == null) return 0;
if (!dir.isDirectory()) return dir.length();
long result = 0;
File[] children = dir.listFiles();
if (children != null)
for (File child : children)
result += calculateSize(child);
return result;
}

清除缓存
public void clearCache() {
new Thread(new Runnable() {
@Override
public void run() {
Glide.get(BaseApplication.getApp()).clearDiskCache();
BaseApplication.getHandler().post(new Runnable() {
@Override
public void run() {
//清除内存缓存
Glide.get(context).clearMemory();
iView.showToast("清除成功");
new GetDiskCacheSizeTask().execute(new File(context.getCacheDir(), DiskCache.Factory.DEFAULT_DISK_CACHE_DIR));
}
});
}
}).start();
}

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容