From e05502626c5e49baa7be9fdd1af5b30ed06b29df Mon Sep 17 00:00:00 2001 From: Nick Randolph Date: Tue, 5 Jun 2018 22:39:22 +1000 Subject: [PATCH] Adjusting startup behaviour --- MvvmCross/ViewModels/MvxAppStart.cs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/MvvmCross/ViewModels/MvxAppStart.cs b/MvvmCross/ViewModels/MvxAppStart.cs index c80f30a365..985b0751ae 100644 --- a/MvvmCross/ViewModels/MvxAppStart.cs +++ b/MvvmCross/ViewModels/MvxAppStart.cs @@ -29,25 +29,25 @@ public void Start(object hint = null) if (Interlocked.CompareExchange(ref startHasCommenced, 1, 0) == 1) return; - Startup(hint).GetAwaiter().GetResult(); + StartAsync(hint).GetAwaiter().GetResult(); } public async Task StartAsync(object hint = null) { - var applicationHint = ApplicationStartup(hint); + var applicationHint = await ApplicationStartup(hint); if (applicationHint != null) { MvxLog.Instance.Trace("Hint ignored in default MvxAppStart"); } - NavigateToFirstViewModel(applicationHint); + await NavigateToFirstViewModel(applicationHint); } - protected abstract void NavigateToFirstViewModel(object hint = null); + protected abstract Task NavigateToFirstViewModel(object hint = null); - protected virtual object ApplicationStartup(object hint = null) + protected virtual async Task ApplicationStartup(object hint = null) { - Application.Startup(); + await Application.Startup(); return hint; } @@ -72,11 +72,11 @@ public MvxAppStart(IMvxApplication application, IMvxNavigationService navigation { } - protected override void NavigateToFirstViewModel(object hint = null) + protected override async Task NavigateToFirstViewModel(object hint = null) { try { - NavigationService.Navigate().GetAwaiter().GetResult(); + await NavigationService.Navigate(); } catch (System.Exception exception) { @@ -91,16 +91,16 @@ public MvxAppStart(IMvxApplication application, IMvxNavigationService navigation { } - protected override object ApplicationStartup(object hint = null) + protected override async Task ApplicationStartup(object hint = null) { - var applicationHint = base.ApplicationStartup(hint); + var applicationHint = await base.ApplicationStartup(hint); if (applicationHint is TParameter parameter && Application is IMvxApplication typedApplication) return typedApplication.Startup(parameter); else return applicationHint; } - protected override void NavigateToFirstViewModel(object hint = null) + protected override async Task NavigateToFirstViewModel(object hint = null) { try { @@ -109,7 +109,7 @@ protected override void NavigateToFirstViewModel(object hint = null) else { MvxLog.Instance.Trace($"Hint is not matching type of {nameof(TParameter)}. Doing navigation without typed parameter instead."); - base.NavigateToFirstViewModel(hint); + await base.NavigateToFirstViewModel(hint); } } catch (System.Exception exception)