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 +} diff --git a/src/com/loopj/android/image/WebImage.java b/src/com/loopj/android/image/WebImage.java index 09206fc..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; @@ -48,7 +49,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(); }