Thanks for the detailed reply, I'll be checking my code and making sure that I'm not doing similar elsewhere!
Martyn -----Original Message----- From: monodroid-boun...@lists.ximian.com [mailto:monodroid-boun...@lists.ximian.com] On Behalf Of Jonathan Pryor Sent: 15 September 2011 22:26 To: Discussions related to Mono for Android Subject: Re: [mono-android] Extending TextView On Sep 15, 2011, at 7:52 AM, Martyn Wendon wrote: > I think that this turned out to be an incorrect (?) use of the "using" statement..... I believe you are correct. > What I was doing was (pseudo code): > > AbsoluteLayout al = new AbsoluteLayout(this); > > using (RotatingTextView rtv = new RotatingTextView()) > { > rtv.somenewproperty = somevalue; > al.AddView(rtv); > } > > SetContentView(al); Yeah, that's bad. :-) As mentioned elsewhere, for every Java.Lang.Object subclass which is created in managed code, a Java side object is created. Internally, we store a mapping between the Java object's JNI handle and the managed object reference value: Dictionary<IntPtr /* JNI handle */, WeakReference /* managed mapping */> instances; Now, calling Java.Lang.Object.Dispose() _removes_ the JNI handle <-> object mapping. This allows the Java GC to (eventually) collect the Java-side object, and for Mono's GC to (eventually) collect the managed object; otherwise, both objects will be kept alive. When you use the `using` block as you do, you're removing the JNI mapping, disassociating the Java object from the managed object. When an overridden method is eventually invoked on the Java-side RotatingTextView instance, Mono for Android will consult the instance mapping, see that one doesn't exist, and _create_ a new managed object. This is why your fields were always 0 -- it was a different object instance, mapped to the same Java instance. > I removed the "using" statement and it all started working as it should. Yup, because the instance mapping is preserved. :-) > Unless you think that this is still a bug, I won't file a bug report!! Yes, this isn't a bug. Thanks, - Jon _______________________________________________ Monodroid mailing list Monodroid@lists.ximian.com UNSUBSCRIBE INFORMATION: http://lists.ximian.com/mailman/listinfo/monodroid ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. ______________________________________________________________________ ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. ______________________________________________________________________ _______________________________________________ Monodroid mailing list Monodroid@lists.ximian.com UNSUBSCRIBE INFORMATION: http://lists.ximian.com/mailman/listinfo/monodroid