Search code examples
androidcachinggetsize

How to get cache size in Android


I'm using fedor's lazy loading list implementation in my test application where I can clear the cache with a single button click. How can I get the cache size of the loaded images in the listview and clear the cache programmatically?

Here is the code for saving the cached images:

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();
}

EDIT:

So basically I added this piece of code in clearCache(), method, but I still cannot see the images start loading again when I'm scrolling.

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();
    }
}

Solution

  • To find the size of the cache directory use the codebelow.

    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();
        }
    }
    

    This will return the number of bytes.