From 69f2c3ea0efe53e04a70ebf29dbf93d6c9558498 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Wed, 28 Jan 2015 08:36:38 -0800 Subject: Put ImageLoader.clearAll in background thread to not block close --- src/github/daneren2005/dsub/util/ImageLoader.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/util/ImageLoader.java b/src/github/daneren2005/dsub/util/ImageLoader.java index a6f482eb..41b4da03 100644 --- a/src/github/daneren2005/dsub/util/ImageLoader.java +++ b/src/github/daneren2005/dsub/util/ImageLoader.java @@ -64,6 +64,7 @@ public class ImageLoader { private final int imageSizeDefault; private final int imageSizeLarge; private final int avatarSizeDefault; + private boolean clearingCache = false; private final static int[] COLORS = {0xFF33B5E5, 0xFFAA66CC, 0xFF99CC00, 0xFFFFBB33, 0xFFFF4444}; @@ -81,7 +82,7 @@ public class ImageLoader { @Override protected void entryRemoved(boolean evicted, String key, Bitmap oldBitmap, Bitmap newBitmap) { if(evicted) { - if(oldBitmap != nowPlaying && key.indexOf("unknown") == -1) { + if(oldBitmap != nowPlaying && key.indexOf("unknown") == -1 || clearingCache) { if(sizeOf("", oldBitmap) > 500) { oldBitmap.recycle(); } @@ -101,7 +102,15 @@ public class ImageLoader { public void clearCache() { nowPlaying = null; - cache.evictAll(); + new SilentBackgroundTask(context) { + @Override + protected Void doInBackground() throws Throwable { + clearingCache = true; + cache.evictAll(); + clearingCache = false; + return null; + } + }.execute(); } private Bitmap getUnknownImage(MusicDirectory.Entry entry, int size) { -- cgit v1.2.3