Android-BitmapCache
Android-BitmapCache copied to clipboard
OutOfMemoryError in sample
Using GridViewActivity in sample I get OutOfMemoryError on Android x86 2.3.3 emulator.
03-14 02:38:35.933: ERROR/AndroidRuntime(1322): FATAL EXCEPTION: AsyncTask #7
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:470)
at uk.co.senab.bitmapcache.BitmapLruCache.getFromDiskCache(BitmapLruCache.java:262)
at uk.co.senab.bitmapcache.BitmapLruCache.get(BitmapLruCache.java:233)
at uk.co.senab.bitmapcache.samples.NetworkedCacheableImageView$ImageUrlAsyncTask.doInBackground(NetworkedCacheableImageView.java:81)
at uk.co.senab.bitmapcache.samples.NetworkedCacheableImageView$ImageUrlAsyncTask.doInBackground(NetworkedCacheableImageView.java:54)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
... 4 more
I met OOM on gridview when the images are quite large (e.g. http://www.hdwallpapers.in/walls/cute_baby_colors-wide.jpg). If you trace the code from this method: uk.co.senab.bitmapcache.NetworkedCacheableImageView.loadImage(String, boolean) The passed decodeOpts doesn't honor BitmapFactory.Options.inSampleSize which is very useful to prevent OOM.