I have like 100+ images(frames) in my drawables and each of them are 1-5 kbs size (with resolution 480 x 272). now when I add these images (frames) in animation-list xml and try to run it, I get this OutOfMemory error, I have searched on internet but couldn't find what I am looking for. so anyone can please tell me what should I do to overcome this error
-
Use lazyLoader to display large size imageHimanshu Joshi– Himanshu Joshi2013-10-30 05:59:02 +00:00Commented Oct 30, 2013 at 5:59
-
how can i use lazyloader in xml? i cant use lazyloader as i want these pictures to be in animation-listawaistoor– awaistoor2013-10-30 06:00:02 +00:00Commented Oct 30, 2013 at 6:00
-
load scaled down images into memoryGopal Gopi– Gopal Gopi2013-10-30 06:00:39 +00:00Commented Oct 30, 2013 at 6:00
-
see here developer.android.com/training/displaying-bitmaps/index.htmlGopal Gopi– Gopal Gopi2013-10-30 06:02:43 +00:00Commented Oct 30, 2013 at 6:02
-
or you can display by creating a handlerHimanshu Joshi– Himanshu Joshi2013-10-30 06:03:01 +00:00Commented Oct 30, 2013 at 6:03
1 Answer
Do one thing in the manifest.xml
<application
android:largeHeap="true">
</application>
Or
make call the Animation in runOnUiThread (Runnable action) or AsyncTask
Or
Single Image need memory:
In this case you have 100 images and dimensions are 400*262.
So , 100 * 400*262*4 = ? KB , size occur during the loading time. If the animation is exceeding the limit of Virtual Heap Memory.
Error will occur defiantly.
For this :
Reduce the dimensions of Image
Or
use less images for the animation
or
split into two animation file after one completion start another one
EDITED on 16th June 2015
Try to use Handler and call Handler after few millisecond. It will also reduce the memory issue(OOM).