我將所有 MvvmCross 庫從 7.1.2 升級到 8.0.0。根據 mvvmcross 檔案中的“從 7 升級到 8”教程,我已經實作了必要的更改(覆寫 CreateLogProvider 和 CreateLogFactory 方法,并將 iocProvider 作為引數添加到 InitializeFirstChance、InitializeLastChance、InitializeNavigationService 和 CreateApp):
public class Setup : MvxAndroidSetup
{
protected override IMvxAndroidViewPresenter CreateViewPresenter() => new HistoryViewPresenter(ViewAssemblies);
protected override void InitializeFirstChance(IMvxIoCProvider iocProvider)
{
base.InitializeFirstChance(iocProvider);
//Things are done here
}
protected override void InitializeLastChance(IMvxIoCProvider iocProvider)
{
base.InitializeLastChance(iocProvider);
//Things are done here
}
protected override IMvxNavigationService InitializeNavigationService(IMvxIoCProvider iocProvider)
{
var loader = CreateViewModelLoader(iocProvider);
Mvx.IoCProvider.RegisterSingleton<IMvxViewModelLoader>(loader);
InitializeViewDispatcher(iocProvider);
var dispatcher = CreateViewDispatcher();
Mvx.IoCProvider.RegisterSingleton(dispatcher);
var navigationService = new DeepNavigationService(null, loader, dispatcher, iocProvider);
Mvx.IoCProvider.RegisterSingleton<IMvxNavigationService>(navigationService);
return navigationService;
}
//Another things are done here
protected override IMvxApplication CreateApp(IMvxIoCProvider iocProvider)
{
return new App();
}
protected override ILoggerProvider CreateLogProvider()
{
return new SerilogLoggerProvider();
}
protected override ILoggerFactory CreateLogFactory()
{
Serilog.Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.CreateLogger();
return new SerilogLoggerFactory();
}
}
我還在核心專案中創建了自定義應用程式啟動并設定了此類 RegisterCustomAppStart:
public class AppStart : MvxAppStart
{
public AppStart(IMvxApplication application, IMvxNavigationService navigationService) : base(application, navigationService) { }
protected override Task NavigateToFirstViewModel(object hint = null)
{
return NavigationService.Navigate<StartupViewModel>();
}
}
public class App : MvxApplication
{
public override void Initialize()
{
//Services and Singletons are registered here.
RegisterCustomAppStart<AppStart>();
}
}
這是問題 - 當我運行應用程式時,我的應用程式卡在 SplashScreen 中。有沒有人遇到過類似的問題?在以前的版本中,一切正常。我會很感激一些如何解決這個問題的建議
uj5u.com熱心網友回復:
我解決了這個問題 - 我改變了行:
var dispatcher = CreateViewDispatcher();
為了:
var dispatcher = Mvx.IoCProvider.Resolve<IMvxViewDispatcher>();
它有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336751.html
