summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2016-08-30 11:57:55 -0600
committerJason Smith <jason.smith@xamarin.com>2016-08-30 10:57:55 -0700
commit974705b9a920e71ecaa9f5e0d58cf6d80a1d71cf (patch)
treecaa8ac25f603ee796f455846e615011afb9b702a /Xamarin.Forms.Controls.Issues
parenta0dae2d111a5fc59a272f5b8a27885a54dcf6f32 (diff)
downloadxamarin-forms-974705b9a920e71ecaa9f5e0d58cf6d80a1d71cf.tar.gz
xamarin-forms-974705b9a920e71ecaa9f5e0d58cf6d80a1d71cf.tar.bz2
xamarin-forms-974705b9a920e71ecaa9f5e0d58cf6d80a1d71cf.zip
Fix memory leak caused by BaseCellView and RendererHolder (#311)
Diffstat (limited to 'Xamarin.Forms.Controls.Issues')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla35132.cs90
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems1
2 files changed, 91 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla35132.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla35132.cs
new file mode 100644
index 00000000..917c608c
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla35132.cs
@@ -0,0 +1,90 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading;
+using Xamarin.Forms.CustomAttributes;
+using Xamarin.Forms.Internals;
+
+#if UITEST
+using Xamarin.UITest;
+using NUnit.Framework;
+#endif
+
+namespace Xamarin.Forms.Controls.Issues
+{
+ [Preserve(AllMembers = true)]
+ [Issue(IssueTracker.Bugzilla, 35132, "Pages are not collected when using a Navigationpage (FormsApplicationActivity)")]
+ public class Bugzilla35132 : TestNavigationPage
+ {
+ protected override void Init()
+ {
+ PushAsync(new RootPage());
+ }
+
+ [Preserve(AllMembers = true)]
+ public class BugPage : ContentPage
+ {
+ public static int Livecount;
+
+ public BugPage(IEnumerable<string> items)
+ {
+ Interlocked.Increment(ref Livecount);
+
+ Content = new StackLayout
+ {
+ Children =
+ {
+ new Label { Text = items.Count() < 3 ? "Running" : Livecount < 3 ? "Success" : "Failure" },
+ new ListView { ItemsSource = items }
+ }
+ };
+ }
+
+ ~BugPage()
+ {
+ Debug.WriteLine(">>>>>>>> BugPage Finalized");
+ Interlocked.Decrement(ref Livecount);
+ }
+ }
+
+ [Preserve(AllMembers = true)]
+ public class RootPage : ContentPage
+ {
+ readonly List<string> _items = new List<string>();
+
+ public RootPage()
+ {
+ var button = new Button { Text = "Open" };
+ button.Clicked += Button_Clicked;
+ Content = button;
+ }
+
+ async void Button_Clicked(object sender, EventArgs e)
+ {
+ Debug.WriteLine(">>>>>>>> Invoking Garbage Collector");
+ GC.Collect();
+ GC.WaitForPendingFinalizers();
+
+ _items.Add((BugPage.Livecount).ToString());
+ await Navigation.PushAsync(new BugPage(_items));
+ }
+ }
+
+#if UITEST
+ [Test]
+ public void Issue1Test ()
+ {
+ RunningApp.WaitForElement (q => q.Marked ("Open"));
+ RunningApp.Tap(q => q.Marked ("Open"));
+ RunningApp.Back();
+ RunningApp.WaitForElement (q => q.Marked ("Open"));
+ RunningApp.Tap(q => q.Marked ("Open"));
+ RunningApp.Back();
+ RunningApp.WaitForElement (q => q.Marked ("Open"));
+ RunningApp.Tap(q => q.Marked ("Open"));
+ RunningApp.WaitForElement (q => q.Marked ("Success"));
+ }
+#endif
+ }
+} \ No newline at end of file
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
index 88cfb0bd..7a46c880 100644
--- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
@@ -62,6 +62,7 @@
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla34007.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla35078.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla35127.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)Bugzilla35132.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla35157.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla35294.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla35472.cs" />