Как узнать размер кеша в Android - PullRequest
1 голос
/ 12 августа 2011

Я использую реализацию ленивого списка загрузки Федора в своем тестовом приложении, где я могу очистить кеш одним нажатием кнопки.Как я могу получить размер кэша загруженных изображений в виде списка и программно очистить его?

Вот код для сохранения кэшированных изображений:

public ImageLoader(Context context){
    //Make the background thead low priority. This way it will not affect the UI performance.
    photoLoaderThread.setPriority(Thread.NORM_PRIORITY-1);
    mAssetManager = context.getAssets();

    //Find the dir to save cached images
    if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
        cacheDir = new File(android.os.Environment.getExternalStorageDirectory(),"LazyList");
    else
        cacheDir = context.getCacheDir();
    if(!cacheDir.exists())
        cacheDir.mkdirs();
}

РЕДАКТИРОВАТЬ:

Таким образом, я добавил этот фрагмент кода в метод clearCache (), но я все еще не вижу, чтобы изображения снова загружались при прокрутке.

public void clearCache() {
    //clear memory cache

    long size=0;
    cache.clear();

    //clear SD cache
    File[] files = cacheDir.listFiles();
    for (File f:files) {
        size = size+f.length();
        if(size >= 200)
            f.delete();
    }
}

Ответы [ 3 ]

5 голосов
/ 12 августа 2011

Чтобы узнать размер каталога кеша, используйте код ниже.

public void clearCache() {
    //clear memory cache

    long size = 0;
    cache.clear();

    //clear SD cache
    File[] files = cacheDir.listFiles();
    for (File f:files) {
        size = size+f.length();
        f.delete();
    }
}

Это вернет количество байтов.

2 голосов
/ 18 февраля 2016

Это было более точным для меня:

private void initializeCache() {
    long size = 0;
    size += getDirSize(this.getCacheDir());
    size += getDirSize(this.getExternalCacheDir());
}

public long getDirSize(File dir){
    long size = 0;
    for (File file : dir.listFiles()) {
        if (file != null && file.isDirectory()) {
            size += getDirSize(file);
        } else if (file != null && file.isFile()) {
            size += file.length();
        }
    }
    return size;
}
1 голос
/ 12 августа 2011

... и очистить кеш, просто удалите каталог и создайте заново пустой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...