【问题标题】:New instance every time using NavigationPage in Xamarin Forms?每次在 Xamarin Forms 中使用 NavigationPage 的新实例?
【发布时间】:2017-04-17 04:29:08
【问题描述】:

假设我有 3 个 Xaml 视图,我使用 MasterDetailPage 和 NavigationPage 来回导航到这些页面。页面 A -> 页面 B -> 页面 C -> ...

我使用 PushAsync 来执行导航。没什么大不了的...

我通过两种方式实现:

1 - 每次在导航时创建这些视图的新实例:

await Navigation.PushAsync(new Views.PageA());

2 - 为每个页面创建一个静态属性(在 App 视图中),我将其用于导航:

public static Views.PageA PageA 
    {
        get
        {
            if (_pageA == null)
            {
                _pageA = new Views.PageA();
            }

            return _pageA =;
        }
    }


await Navigation.PushAsync(App.PageA);

还有其他方法吗?每次都使用静态实例还是新实例?

我担心的是性能和内存使用。

请发表您的意见,我们将不胜感激一些代码。

【问题讨论】:

  • 你在Android上测试它吗?
  • @AliBahraminezhad 在 iOS 和 Adroid 模拟器和设备中
  • 如果iOSAndroid 都发生这种情况,我不会,但Android Activitys 总是会重新创建。解决方法之一是Singleton

标签: c# xamarin xamarin.forms


【解决方案1】:

最好的方法是使用 push 和 pop。您可以使用 pushmodalasync 创建新的根页面(在这种情况下,导航堆栈计数 = 1)。和 poptorootasync 返回您的根页面(navigationstack[0])。

【讨论】:

  • 是的,我会建议每次都像某些构造函数一样创建新页面..
  • 你知道如何测量吗?
  • 我不知道如何测试性能,但我这样做是没有问题的。静态值可能很烦人,因为你必须小心你的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 2023-03-04
相关资源
最近更新 更多