2016-12-02 2 views
2

Предположим, у меня есть 3 представления Xaml, и я использую MasterDetailPage и NavigationPage для перемещения назад и вперед к этим страницам. Страница A -> Страница B -> Страница C -> ...Новый экземпляр каждый раз, используя NavigationPage в Xamarin Forms?

Я использую PushAsync для осуществления навигации. Ничего особенного ...

Я implemment, что двумя способами:

1 - Создать новый экземпляр этих взглядов каждый раз по навигации:

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

2 - Создать статическое свойство (на вид приложения) для каждой страницы, и я использую его для навигации:

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

      return _pageA =; 
     } 
    } 


await Navigation.PushAsync(App.PageA); 

Есть ли другой способ сделать это? Использовать статический или новый экземпляр каждый раз?

Моя забота об эффективности и использовании memmory.

Пожалуйста, дайте нам ваш ответ с вашим мнением, и некоторый код будет оценен.

+0

Вы тестируете его на 'Android'? –

+0

@AliBahraminezhad как в iOS, так и в симуляторах и устройствах Adroid –

+0

Не знаю, если это происходит как в iOS, так и в Android, но Android 'Activity' всегда будет воссоздаваться. Одним из обходных решений является «Singleton» –

ответ

0

Лучший способ - использовать push и pop. вы можете использовать pushmodalasync для создания новой корневой страницы (в этом случае счетчик стека навигации = 1). и poptorootasync, чтобы вернуться на вашу корневую страницу (navigationstack [0]).

+0

И да, я бы рекомендовал создавать новую страницу каждый раз, как с некоторыми конструкторами. –

+0

Знаете ли вы, как это сделать? –

+0

Я не знаю, как вы можете проверить производительность, но я делаю это так и никогда не имел проблемы. Статические значения могут быть раздражающими, потому что вы должны быть осторожны с вашими значениями. –

Смежные вопросы