Bump

Hi,

Would you please help me how to handle the memory leak on
Drawable.createFromStream()?

 I am receiving a base64 image from a webservice. And I decode it using
Apache lib. After that I convert it to drawable through
Drawable.createFromStream(). But when the image size is bit larger (~>350kb)
it starts throwing OutOfMemoryError exception. Ok, I can handle this by
catching this exception. But eventually after catching 2 or 3 such
exceptions the heap is full and it start throwing exceptions for other
methods and for small images as well.

The relevant code snip is given below.


        byte[] arr = null;
        InputStream imageStream = null;
        try
        {
            arr = Base64.decodeBase64(result.
>
> getScreenShot().getBytes());
>
>             imageStream = new BufferedInputStream(new
> ByteArrayInputStream(arr));
>             TJCAppDetail.this.screenShotDrawable =
> Drawable.createFromStream(imageStream, "src");
>             screenShot.setImageDrawable(screenShotDrawable);
>         }
>         catch (OutOfMemoryError outOfMemoryError)
>         {
>             arr = null;
>             imageStream = null;
>             if (screenShotDrawable != null)
>             {
>             screenShotDrawable.setCallback(null);
>             if (((BitmapDrawable) screenShotDrawable).getBitmap() != null)
>                 ((BitmapDrawable)
> screenShotDrawable).getBitmap().recycle();
>             }
>
>             Log.e("TJC_EXCEPTION", outOfMemoryError.getMessage());
>         }
>
>





On Tue, Nov 10, 2009 at 7:11 PM, Atif Gulzar <[email protected]> wrote:

> seems this is a reported bug?
> http://code.google.com/p/android/issues/detail?id=294
>
>
>
> --
> Best Regards,
> Atif Gulzar
>
> I ◘◘◘◘ Unicode, ɹɐzlnƃ ɟıʇɐ
>
>
>
> On Tue, Nov 10, 2009 at 5:51 PM, Atif Gulzar <[email protected]>wrote:
>
>> Hi,
>>
>> Would you please help me how to handle the memory leak on
>> Drawable.createFromStream()?
>>
>>  I am receiving a base64 image from a webservice. And I decode it using
>> Apache lib. After that I convert it to drawable through
>> Drawable.createFromStream(). But when the image size is bit larger (~>350kb)
>> it starts throwing OutOfMemoryError exception. Ok, I can handle this by
>> catching this exception. But eventually after catching 2 or 3 such
>> exceptions the heap is full and it start throwing exceptions for other
>> methods and for small images as well.
>>
>> The relevant code snip is given below.
>>
>>
>>         byte[] arr = null;
>>         InputStream imageStream = null;
>>         try
>>         {
>>             arr = Base64.decodeBase64(result.getScreenShot().getBytes());
>>
>>             imageStream = new BufferedInputStream(new
>> ByteArrayInputStream(arr));
>>             TJCAppDetail.this.screenShotDrawable =
>> Drawable.createFromStream(imageStream, "src");
>>             screenShot.setImageDrawable(screenShotDrawable);
>>         }
>>         catch (OutOfMemoryError outOfMemoryError)
>>         {
>>             arr = null;
>>             imageStream = null;
>>             if (screenShotDrawable != null)
>>             {
>>             screenShotDrawable.setCallback(null);
>>             if (((BitmapDrawable) screenShotDrawable).getBitmap() != null)
>>                 ((BitmapDrawable)
>> screenShotDrawable).getBitmap().recycle();
>>             }
>>
>>             Log.e("TJC_EXCEPTION", outOfMemoryError.getMessage());
>>         }
>>
>>
>>
>> --
>> Best Regards,
>> Atif Gulzar
>>
>> I ◘◘◘◘ Unicode, ɹɐzlnƃ ɟıʇɐ
>>
>>
>

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

Reply via email to