В последнее время я размышлял над этим, и я надеялся, что кто-то, кто лучше знает MvvmCross, чем я, может пролить свет на это. Учитывая нюансы между каждой мобильной платформой, возможно, есть несколько разных факторов, которые могут повлиять на эту проблему. Но для этого сценария предположим, что нам нужен лучший подход для кросс-платформенного решения.Лучший подход для вызова веб-сервиса (или аналогичного) с MvvmCross
Итак, предположим, что у нас есть базовый вид и установка класса ViewModel. Вот пример iOS.
Посмотреть
public partial class FirstView : MvxViewController<FirstViewModel>
{
public FirstView(IntPtr handle) : base(handle)
{
}
public override void ViewDidLoad()
{
Request = new MvxViewModelInstanceRequest(FirstViewModel.NewInstance());
base.ViewDidLoad();
}
}
вид Модель
public class FirstViewModel : MvxViewModel
{
public static FirstViewModel NewInstance()
{
return Mvx.IocConstruct<FirstViewModel>();
}
public FirstViewModel()
{
}
}
Теперь при загрузке этого View или в какой-то момент как раз перед вид создается мы хотим загрузить некоторые данные из сеть с использованием услуги, которую мы вводим с использованием инъекции зависимостей; потому что отображение представления зависит от этих данных. Здесь кроется проблема .. в какой точке с точки зрения платформы и в жизненном цикле MvvmCross было бы наиболее подходящим местом для вызова функции веб-выборки в сервисе.
Что касается платформы, я бы предположил, что мы должны сделать это, как только будет загружен вид. Потому что, если извлеченные данные - это нечто иное, чем простые типы данных, будет неудобно работать с Android, так как нужно было бы перенести данные на диск и получить их после навигации из-за сериализации между действиями.
Так что предположим, что мы вызвали веб-выборку во время процесса загрузки вида. Где лучшее место в архитектуре MvvmCross, чтобы скрыть это, наиболее точно следует парадигмам дизайна. например Модель просмотра. Есть ли какие-либо методы жизненного цикла, которые кто-то мог бы рекомендовать, чтобы вызвать его внутри. Что-то вроде метода Start, вызванного после создания модели представления.
Да, оказалось, что это была плохая практика, которую мы получили через код обмена в офисе. Я думаю, это цена, которую вы платите за то, что не пишете свой собственный код. Спасибо за статью, выглядит очень информативно. Дайте мне немного еды для размышлений. –