From e3316bce3d5234978110d87a8fc21b5a6e6884ac Mon Sep 17 00:00:00 2001 From: Daniel Marcus Date: Wed, 7 Aug 2013 18:16:01 -0400 Subject: [PATCH 1/3] Catch out of memory errors produced by low-memory devices --- src/com/loopj/android/image/SmartImageTask.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/com/loopj/android/image/SmartImageTask.java b/src/com/loopj/android/image/SmartImageTask.java index abffa3c..d78a350 100644 --- a/src/com/loopj/android/image/SmartImageTask.java +++ b/src/com/loopj/android/image/SmartImageTask.java @@ -16,8 +16,12 @@ public class SmartImageTask implements Runnable { public static class OnCompleteHandler extends Handler { @Override public void handleMessage(Message msg) { - Bitmap bitmap = (Bitmap)msg.obj; - onComplete(bitmap); + try{ + Bitmap bitmap = (Bitmap)msg.obj; + onComplete(bitmap); + }catch (OutOfMemoryError e){ + e.printStackTrace(); + } } public void onComplete(Bitmap bitmap){}; @@ -53,4 +57,4 @@ public void complete(Bitmap bitmap){ onCompleteHandler.sendMessage(onCompleteHandler.obtainMessage(BITMAP_READY, bitmap)); } } -} \ No newline at end of file +} From f4793ce623eeddaa1c55c82c4a24d384c90c9304 Mon Sep 17 00:00:00 2001 From: Daniel Marcus Date: Wed, 7 Aug 2013 18:17:49 -0400 Subject: [PATCH 2/3] Detect low memory and change inSample when decoding images from a URL --- src/com/loopj/android/image/WebImage.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/com/loopj/android/image/WebImage.java b/src/com/loopj/android/image/WebImage.java index 09206fc..c9fc512 100644 --- a/src/com/loopj/android/image/WebImage.java +++ b/src/com/loopj/android/image/WebImage.java @@ -48,7 +48,17 @@ private Bitmap getBitmapFromUrl(String url) { URLConnection conn = new URL(url).openConnection(); conn.setConnectTimeout(CONNECT_TIMEOUT); conn.setReadTimeout(READ_TIMEOUT); - bitmap = BitmapFactory.decodeStream((InputStream) conn.getContent()); + + ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo(); + int inSample = 1; + if(memInfo.lowMemory){ + inSample = 12; + } + + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inSampleSize = inSample; + + bitmap = BitmapFactory.decodeStream((InputStream) conn.getContent(), null, options); } catch(Exception e) { e.printStackTrace(); } From 383a082cce5d40126ce90aa6192cb69e0c9dd39b Mon Sep 17 00:00:00 2001 From: Daniel Marcus Date: Wed, 7 Aug 2013 18:25:37 -0400 Subject: [PATCH 3/3] import activitymanager --- src/com/loopj/android/image/WebImage.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/loopj/android/image/WebImage.java b/src/com/loopj/android/image/WebImage.java index c9fc512..c3ebfd9 100644 --- a/src/com/loopj/android/image/WebImage.java +++ b/src/com/loopj/android/image/WebImage.java @@ -4,6 +4,7 @@ import java.net.URL; import java.net.URLConnection; +import android.app.ActivityManager; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory;