So I did get the crashes to stop, and I have a idea of why it works... anyways.. I updated the onWindowFocusChange set the backGroundDrawable to null when the app loses focus. I also do this on the onDestroy() and onPause() methods as well.
My guess is that the app goes into pause mode and when restarted since I was reattaching the same animation to the ImageView it was causing a leak. Note this ImageView and Animation were not static variables they were loaded only on the onWindowFocusChange event. I made the assumption since I was not letting my ImageView and Animation be created as static variables I wouldn't leak the Context, but apparently the recreation of the animation attachment to the ImageView was for some reason, this I'm not 100% sure on, but it seems to be the case. On Dec 10, 7:53 pm, Romain Guy <[email protected]> wrote: > DDMS has a feature to dump the Java heap. You can then analyze is > using tools like hat, MAT, JProfiler, etc. > > > > On Thu, Dec 10, 2009 at 4:17 PM, Matt Kanninen <[email protected]> wrote: > > Got any advice on tools to use to debug the most likely situation > > you've described? I'm at the point where I've ruled out static > > variables. > > > I'm working on code that started with Android 1.0, and has had a > > series of developers since. Good code analysis tools could help > > immensely. It beats re writing every class. > > > On Dec 10, 3:47 pm, Romain Guy <[email protected]> wrote: > >> If there's an OutOfMemoryError, it's most likely that the app is using > >> too much memory and/or leaking. Filing a bug won't help. > > >> On Thu, Dec 10, 2009 at 3:43 PM, Matt Kanninen <[email protected]> > >> wrote: > >> > Best of luck. I recommend you create a very small test application to > >> > reproduce the bug, and submit it to b.android.com. > > >> > On Dec 10, 12:52 pm, Mark Hansen <[email protected]> wrote: > >> >> So I want to start an animation when my application starts that always > >> >> visible in the application. So reading about the AnimationDrawable it > >> >> was stated to use onWindowFocusChanged instead of onCreate() to ensure > >> >> that animation would start properly in the UI thread. > > >> >> @Override > >> >> public void onWindowFocusChanged(boolean hasFocus) { > >> >> super.onWindowFocusChanged(hasFocus); > > >> >> AnimationDrawable cam; > >> >> ImageView iv = > >> >> (ImageView)findViewById(R.id.ImageViewFuzzAnimation); > >> >> iv.setBackgroundResource(R.anim.fuzz_animation); > >> >> cam = (AnimationDrawable)iv.getBackground(); > >> >> cam.start(); > > >> >> } > > >> >> This works fine, but if I leave my application and come back I get a > >> >> out of memory error, below is the log.. > > >> >> Can anyone help me out on what I may be doing wrong here? > > >> >> 12-10 15:52:14.365: ERROR/dalvikvm-heap(3102): 805600-byte external > >> >> allocation too large for this process. > >> >> 12-10 15:52:14.373: ERROR/(3102): VM won't let us allocate 805600 > >> >> bytes > >> >> 12-10 15:52:14.373: DEBUG/skia(3102): --- decoder->decode returned > >> >> false > >> >> 12-10 15:52:16.490: DEBUG/dalvikvm(1570): GC freed 797 objects / 43592 > >> >> bytes in 94ms > >> >> 12-10 15:52:20.147: DEBUG/AndroidRuntime(3102): Shutting down VM > > >> >> 12-10 15:52:20.147: ERROR/AndroidRuntime(3102): Uncaught handler: > >> >> thread main exiting due to uncaught exception > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): > >> >> java.lang.OutOfMemoryError: bitmap size exceeds VM budget > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:447) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java: > >> >> 323) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.graphics.drawable.Drawable.createFromResourceStream > >> >> (Drawable.java:697) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.content.res.Resources.loadDrawable(Resources.java:1705) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.content.res.Resources.getDrawable(Resources.java:580) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.graphics.drawable.AnimationDrawable.inflate > >> >> (AnimationDrawable.java:265) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java: > >> >> 788) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.graphics.drawable.Drawable.createFromXml(Drawable.java:729) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.content.res.Resources.loadDrawable(Resources.java:1690) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.content.res.Resources.getDrawable(Resources.java:580) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.view.View.setBackgroundResource(View.java:7187) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> com.stonedonkey.santatracker.ActivityGUI.onWindowFocusChanged > >> >> (ActivityGUI.java:170) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> com.android.internal.policy.impl.PhoneWindow > >> >> $DecorView.onWindowFocusChanged(PhoneWindow.java:1969) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.view.View.dispatchWindowFocusChanged(View.java:3731) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:656) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.view.ViewRoot.handleMessage(ViewRoot.java:1819) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.os.Handler.dispatchMessage(Handler.java:99) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.os.Looper.loop(Looper.java:123) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> android.app.ActivityThread.main(ActivityThread.java:4338) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> java.lang.reflect.Method.invokeNative(Native Method) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> java.lang.reflect.Method.invoke(Method.java:521) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run > >> >> (ZygoteInit.java:860) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) > >> >> 12-10 15:52:20.232: ERROR/AndroidRuntime(3102): at > >> >> dalvik.system.NativeStart.main(Native Method) > > >> > -- > >> > 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 > > >> -- > >> Romain Guy > >> Android framework engineer > >> [email protected] > > >> Note: please don't send private questions to me, as I don't have time > >> to provide private support. All such questions should be posted on > >> public forums, where I and others can see and answer them > > > -- > > 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 > > -- > Romain Guy > Android framework engineer > [email protected] > > Note: please don't send private questions to me, as I don't have time > to provide private support. All such questions should be posted on > public forums, where I and others can see and answer them -- 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

