1. 程式人生 > >Android Glide獲取快取大小與清除快取

Android Glide獲取快取大小與清除快取

GlideCatchSimple

SimpleDemo請看github

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

<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:[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.
 * <p>
 * QQ:11613371
 * GitHub:https://github.com/YaphetZhao
 * Email:[email protected]
 * Email_EN:[email protected]
 * <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

我的更多git專案

  • 歡迎fork,感謝star

相關推薦

Android Glide獲取快取大小清除快取

GlideCatchSimple SimpleDemo請看github Glide快取Simple 快取路徑的指定 快取大小的獲取 磁碟快取清除(兩種方法) 記憶體快取清除 可clone之後檢視使用Simple Glide cache Si

iOS 獲取快取大小清除快取

首先要獲取cache資料夾路徑 #define cachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject] //

Android記錄20-獲取快取大小清除快取功能

Android開發記錄20-獲取快取大小和清除快取功能轉載請註明:IT_xiao小巫 部落格地址:http://blog.csdn.net/wwj_748前言本篇部落格要給大家分享的如何獲取應用快取的大小和清除快取的功能,我們知道我們應用當中經常會產生一些資料,比如圖片的快取

iOS獲取App快取檔案的大小清除快取

App在處理網路資源時,一般都會做離線快取處理,其中最典型離線快取框架為SDWebImage。 但是,離線快取會佔用一定的儲存空間,所以快取清理功能基本成為資訊、購物、閱讀類app的標配功能。 下面用程式碼來分別介紹快取檔案大小的獲取及清除快取

iOS開發 SDWebImage 獲取快取清除快取

獲取快取:     //獲取快取圖片的大小(位元組)     NSUInteger bytesCache = [[SDImageCache sharedImageCache] getSize];     //換算成 MB (

android Glide 獲取磁碟快取

Glide是Google推薦的圖片載入庫, 載入圖片一般以下面的形式: Glide.with(context).load(ImgUrl) .asBitmap() .error(R.drawable.error) .pla

android獲取快取大小並清理快取

本文主要注重介紹實戰操作,理論知識可能介紹的不多,勿噴 簡單說兩句快取的好處: 採用快取,可以進一步大大緩解資料互動的壓力,又能提供一定的離線瀏覽。下邊我簡略列舉一下快取管理的適用環境: 1. 提供網路服務的應用 2. 資料更新不需要實時更新,哪怕是3-5分鐘的延遲

springcloud系列—Hystrix—第3章-3: Hystrix 服務降級(fallback)異常處理,Hystrix依賴隔離(命令名稱-分組和執行緒池)、請求快取清除快取、斷路器

資料參考:《Spring Cloud 微服務實戰》 目錄 服務降級 在HystrixCommand中可以通過過載getFallback()方法來實現服務降級邏輯。 在 HystrixObservableCommand 實現得 Hystrix 命令中,我們可以通過過載 resumenW

Android獲取螢幕大小

java 程式碼 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.DisplayMetrics; import andr

瀏覽器快取cookie伺服器快取

之前對快取都是一知半解的,都是基於理論之上沒有正整實際動手驗證過,今天抽時間終於把快取重新理了一片 1、 設定js 、css緩存       http頭部中設定expires,Cache-Contro

Hibernate快取原理查詢快取的組合探究

來源:http://www.javaeye.com/topic/431603 0.前言          由於對Hibernate的二級快取和查詢快取的區別不瞭解,也不知道它們起什麼作用。於是動手做了一些實驗,對它們的組合使用有了一個表面的認識。 1.前提      

SDWebImage/SDImageCache 獲得快取大小,清理快取

最新版的SDWebImage已帶有獲取快取空間總大小的方法 -(vode) getSize ;  若要想獲取SDImageCache指定快取大小 可以新增一下方法; - (float)getCachesSize{ float getSize = 0; NSDire

Android Glide快取清除獲取快取大小

不多說了,還是直接上程式碼吧 /** * Created by zhaoyong on 2016/6/21. * Glide快取工具類 */ public class ImageCatchUtil { private static ImageCatchUtil inst; priva

Glide 快取工具例子,快取大小獲取,磁碟快取清除(2 種方法),記憶體快取清除

Glide 快取 Simple快取路徑的指定快取大小的獲取磁碟快取清除(兩種方法)記憶體快取清除可 clone 之後檢視使用 SimpleGlide cache Simple.The cache path specifiedThe cache sizeThe disk cache (two ways)Memo

Android 清除快取詳細實現(顯示快取大小

  清除快取功能算是個十分雞肋的功能了,但是大多數產品或者客戶都希望有這麼個東西顯得APP功能完善,網上有很多,但是對於新手來說,那些感覺並不詳細,我貼個完整到小白都能懂的。 下面是工具類,包含清除快取、獲取快取檔案大小、格式化方法。 總之就是工具,自己建立一個帖進去。 p

Android 獲取遠端圖片本地圖片快取

 對圖片來說,你不可能讓應用每次獲取的時候都重新到遠端伺服器去下載,特別是顯示ListView中的圖片的時候,滑動的速度變得很快,這樣將會造成ANR,即使圖片比較小,但是圖片還沒來得及釋放的話,累計的圖片將會佔用比較大的記憶體,但是又不能將所有的圖片資源在獲取之後放在記憶體中,使用弱引用儲存物件的方法儲存,因

Android glide 圖片從快取

private class getImageCacheAsyncTask extends AsyncTask<String, Void, File> { private final Context context; public getImageCach

ios 快取大小, 清除快取 成 封裝工具

今日開發的資訊類APP, 應用在處理網路資源時,做了資訊資料快取,其中以圖片快取最為典型,其中很流行的離線快取框架為SDWebImage。 但是,離線快取會佔用手機儲存空間,所以快取清理功能基本成為資訊、購物、閱讀類app的標配功能。 在開發中將讀取 和 清除的功能封裝成了工具類,方

Android快取策略圖片載入

Android快取策略 Android快取策略 LruCache DiskLruCache glide 鏈式呼叫 配合生命週期使用 快取設定 fresco 新增依賴

Android開發:計算快取大小並且清空快取

專案中碰到了計算快取大小和清空快取的功能,這個很常見的功能,幾乎每個APP都有,以為實現很簡單,網上搜了一大堆,發現都不是符合我需要的,而且經常刪除的沒有效果,於是又另外找了一些資料,折騰了蠻久,終於完成了 以下的這個類的功能很簡單,計算你的快取總大小,不管內部快取還是外部快取,和清空快取,包括