Hi Nivek,

Can you please tell me the solution for the problem attempt to use
recycled bitmap

Any solution please let me know.

Your reply will be highly appreaciated

Thanks and Regards
Mohammed Sameer

On Aug 17, 11:53 pm, Nivek <kevin.gau...@gmail.com> wrote:
> When you change the device orientation, you app is closed and then
> reopened.
>
> Android handles bitmaps a "special" way, you HAVE to explicitly
> recycle them as soon as you don't need them anymore... or they stay
> allocated in memory and NEVER get freed.
>
> I have started to code an app which uses a set of ImageViews. To avoid
> allocation errors on orientation changes, I had to override the
> onDestroy() method this way :
>         /*
>          * (non-Javadoc)
>          *
>          * @see android.app.Activity#onDestroy()
>          */
>         @Override
>         protected void onDestroy() {
>                 super.onDestroy();
>                 if (isFinishing()) {
>                         for (ImageView view : mImgViews) {
>                                 Drawable toRecycle = view.getDrawable
> ();
>                                 if (toRecycle != null) {
>                                         ((BitmapDrawable)
> toRecycle).getBitmap().recycle();
>                                 }
>                         }
>                 }
>         }
>
> After this, If the orientation change time is too long, you have to
> store the data (bitmaps and whatever else you need) with
> onRetainNonConfigurationInstance() and get them back on reinit with
> getLastNonConfigurationInstance().
>
> This has been explained by Romain Guy on his blog 
> :http://www.curious-creature.org/2009/02/16/faster-screen-orientation-...
>
> On 17 août, 15:58, Flying Coder <av8r.st...@gmail.com> wrote:
>
>
>
> > This has been driving me nuts and I'm hoping someone will be able to
> > help me understand what is happening (or better yet, how to fix
> > it! ;-).
>
> > I set the background image in one of my apps to the system wallpaper
> > image using the following code:
>
> >    Drawable wp = this.getWallpaper();
> >    background = (ImageView) findViewById(R.id.background);
> >    background.setImageDrawable(wp);
>
> > This seems to work fine, but periodically, I get the out of memory
> > error shown below.  Actually, on the emulator, all I have to do is
> > repeatedly rotate the device and this error will consistently happen
> > after 10-12 rotations.  On the G1, opening and closing the keyboard
> > doesn't seem to cause this, but I'll still get the failure every once
> > in a while.
>
> > Is getWallpaper() actually making a copy of the image (I would have
> > thought I'd just get a refernece to the existingbitmap)?  Do I need
> > to do anything special to free the image?
>
> > 08-17 08:32:37.943: ERROR/dalvikvm-heap(1597): 614400-byte external
> > allocation too large for this process.
> > 08-17 08:32:37.943: ERROR/(1597): VM won't let us allocate 614400
> > bytes
> > 08-17 08:32:38.054: DEBUG/AndroidRuntime(1597): Shutting down VM
> > 08-17 08:32:38.054: WARN/dalvikvm(1597): threadid=3: thread exiting
> > with uncaught exception (group=0x4000fe70)
> > 08-17 08:32:38.054: ERROR/AndroidRuntime(1597): Uncaught handler:
> > thread main exiting due to uncaught exception
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):
> > java.lang.OutOfMemoryError:bitmapsize exceeds VM budget
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.graphics.BitmapFactory.nativeDecodeFileDescriptor(Native
> > Method)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.graphics.BitmapFactory.decodeFileDescriptor(BitmapFactory.java:
> > 424)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.app.ApplicationContext.getCurrentWallpaperLocked
> > (ApplicationContext.java:523)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.app.ApplicationContext.peekWallpaper(ApplicationContext.java:
> > 515)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.app.ApplicationContext.getWallpaper(ApplicationContext.java:
> > 504)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.content.ContextWrapper.getWallpaper(ContextWrapper.java:201)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at ....onCreate
> > (MyApp.java:247)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:
> > 1123)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
> > 2231)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:
> > 2284)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.app.ActivityThread.access$1800(ActivityThread.java:112)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.os.Handler.dispatchMessage(Handler.java:99)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.os.Looper.loop(Looper.java:123)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > android.app.ActivityThread.main(ActivityThread.java:3948)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > java.lang.reflect.Method.invokeNative(Native Method)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > java.lang.reflect.Method.invoke(Method.java:521)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
> > (ZygoteInit.java:782)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
> > 08-17 08:32:38.313: ERROR/AndroidRuntime(1597):     at
> > dalvik.system.NativeStart.main(Native Method)- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
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