[mono-android] Memory Leak with Background Image

subsembly a.selle at subsembly.com
Mon Jan 23 11:19:07 UTC 2012


Hi,

it seems that bitmap images attached as background drawables are never
released. In order to re-create the problem just create a default Mono for
Android project and add the line

android:background="@drawable/wallpaper"

to the outer LinearLayout. Also add a wallpaper.png image (make it large to
quickly see the problem, e.g. 1280x1024 pixels) to the resources drawable
folder. Then start the application.

When turning the orientation of the device (portrait/landscape) the activity
is re-created with every turn. Turning the device several times (about 7
times with a 1280x1024 image) causes an exception because we are already
running out of memory.

To verify the problem I also created a Java Android default application and
made the very same changes to it, using the very same image. Needless to
say, the real Android application does never exhaust its memory.

I assume that Mono for Android somewhere keeps a persistent internal
reference to every Activity that is ever created and never releases it. Thus
all resources attached to an Activity are never released, too.

I even trimmed down the default application to just

namespace MonoAndroidApplication2
{
	[Activity(Label = "MonoAndroidApplication2", MainLauncher = true)]
	public class Activity1 : Activity
	{
		protected override void OnCreate(Bundle bundle)
		{
			base.OnCreate(bundle);
			SetContentView(Resource.Layout.Main);
		}
	}
}

and still, the memory of the background image and probably more is leaked.

BTW: Sure I could use a smaller image or maybe no background image at all.
But this would only defer the problem and not solve it.

Cheers,

Andreas


--
View this message in context: http://mono-for-android.1047100.n5.nabble.com/Memory-Leak-with-Background-Image-tp5165833p5165833.html
Sent from the Mono for Android mailing list archive at Nabble.com.


More information about the Monodroid mailing list