Well, each process is assigned a max heap size which varies from
device to device. And since it is an error, your catch blocks would
not be able to catch this. And also, calling gc might be able to help
you if the bitmap size exceed the allocated heap size anyway.

One workaround would be to scale your bitmap to a create a smaller
sized image which would in turn take up less space on the heap. Here
is the way to do it.

BitmapFactory.Options bmpBuffer = new BitmapFactory.Options();
bmpBuffer.inSampleSize = 4;
Bitmap bmp = BitmapFactory.decodeFile(path, bmpBuffer);

This would make your bitmaps 1/4 th of the original size and hence
would take up 1/4th space as well.

Thanks and Regards,
Kumar Bibek
http://tech-droid.blogspot.com

On Jun 8, 11:44 pm, Stephen Eilert <spedr...@gmail.com> wrote:
> On Tue, Jun 8, 2010 at 3:39 PM, Greg Donald <gdon...@gmail.com> wrote:
> > I used this sort of code to make sure my bitmaps load:
>
> >    try
> >    {
> >      foo = BitmapFactory.decodeResource( resources, R.drawable.foo );
> >    }
> >    catch( Exception e )
> >    {
> >      System.gc();
> >      foo = BitmapFactory.decodeResource( resources, R.drawable.foo );
> >    }
>
> > In 2.2, it's now failing sometimes and my catch block no longer
> > catches anything.  Why would that be?
>
> > Is there a better way to avoid a java.lang.OutOfMemoryError ?
>
> Is Dalvik such a crappy virtual machine that it can't be bothered to
> run the garbage collector before spitting out an OutOfMemory
> exception?
>
> -- Stephen
>
> Sent from my Emacs

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to