diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2017-01-23 12:42:38 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-23 12:42:38 -0700 |
commit | 2c56d6211db41a1b105ac466630dca783d5bd1ec (patch) | |
tree | 4e476c7c527198e2a5c0048bf8f44e48bb6658da /Xamarin.Forms.Platform.Android | |
parent | c468302e9da38354d0b8d3004ac44f39b65f5fbf (diff) | |
download | xamarin-forms-2c56d6211db41a1b105ac466630dca783d5bd1ec.tar.gz xamarin-forms-2c56d6211db41a1b105ac466630dca783d5bd1ec.tar.bz2 xamarin-forms-2c56d6211db41a1b105ac466630dca783d5bd1ec.zip |
Reduce overhead of pushing existing navigation stack (#672)
* Make StackCopy less awkward
* Clean up comment
* Update docs
* Update docs
* Replace SecondToLast with an arbitrarily deep Peek method
* Update docs
* Handle negative depths in Peek()
Diffstat (limited to 'Xamarin.Forms.Platform.Android')
-rw-r--r-- | Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs | 4 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs index cab4d561..cc474293 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs @@ -268,7 +268,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat navController.RemovePageRequested += OnRemovePageRequested; // If there is already stuff on the stack we need to push it - foreach (Page page in navController.StackCopy.Reverse()) + foreach (Page page in navController.Pages) { PushViewAsync(page, false); } @@ -461,7 +461,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat Task<bool> OnPopViewAsync(Page page, bool animated) { - Page pageToShow = ((INavigationPageController)Element).StackCopy.Skip(1).FirstOrDefault(); + Page pageToShow = ((INavigationPageController)Element).Peek(1); if (pageToShow == null) return Task.FromResult(false); diff --git a/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs index c02dc42b..bf6540b9 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs @@ -109,7 +109,7 @@ namespace Xamarin.Forms.Platform.Android newNavController.RemovePageRequested += OnRemovePageRequested; // If there is already stuff on the stack we need to push it - foreach(Page page in newNavController.StackCopy.Reverse()) + foreach (Page page in newNavController.Pages) { PushViewAsync(page, false); } @@ -130,7 +130,7 @@ namespace Xamarin.Forms.Platform.Android protected virtual Task<bool> OnPopViewAsync(Page page, bool animated) { - Page pageToShow = ((INavigationPageController)Element).StackCopy.Skip(1).FirstOrDefault(); + Page pageToShow = ((INavigationPageController)Element).Peek(1); if (pageToShow == null) return Task.FromResult(false); |