tutorial template supported platforms xamarin xamarin.android mvvmcross

xamarin - supported - mvvmcross template



Inicialización de MvvmCross (1)

la función que utilicé (MvxAndroidSetupSingleton.GetOrCreateSetup ()) ha quedado en desuso.

Los cambios en la inicialización de MvvmCross fueron necesarios para ayudar a los usuarios a evitar los problemas de ''múltiples pantallas emergentes'' - consulte https://github.com/slodge/MvvmCross/issues/274 .

El núcleo de estos cambios fue:

Entonces puedes ver que este cambio eliminó las líneas:

- var setup = MvxAndroidSetupSingleton.GetOrCreateSetup(activity.ApplicationContext); - setup.EnsureInitialized(androidView.GetType());

y los reemplazó con:

+ var setupSingleton = MvxAndroidSetupSingleton.EnsureSingletonAvailable(activity.ApplicationContext); + setupSingleton.EnsureInitialized();

Por lo tanto, sus cambios deberán reflejar este mismo código.

En cuestión Usando MvvmCross de proveedores de contenido y actividades , quería saber cómo inicializar el sistema MvvmCross.

La respuesta dada funcionó entonces, pero con las actualizaciones recientes de MvvmCross, la función que utilicé (MvxAndroidSetupSingleton.GetOrCreateSetup ()) ha quedado en desuso.

Ahora he cambiado mi inicialización y parece funcionar hasta ahora, pero ¿es correcto y correcto? ¿Debo hacer las cosas de manera diferente para mejorar la portabilidad?

Clase de configuración, en la DLL específica de la plataforma para Android:

public class Setup : MvxAndroidSetup { public Setup(Context applicationContext) : base(applicationContext) { } protected override IMvxApplication CreateApp() { // Create logger class which can be used from now on var logger = new AndroidLogger(); Mvx.RegisterSingleton(typeof(ILogger), logger); var app = new App(); InitialisePlatformSpecificStuff(); return app; } private void InitialisePlatformSpecificStuff() { // For instance register platform specific classes with IoC } }

Y mi clase de aplicación en la biblioteca central portátil:

public class App : MvxApplication { public App() { } public override void Initialize() { base.Initialize(); AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler; InitialisePlugins(); InitaliseServices(); InitialiseStartNavigation(); } private void InitaliseServices() { CreatableTypes().EndingWith("Service").AsInterfaces().RegisterAsLazySingleton(); } private void InitialiseStartNavigation() { } private void InitialisePlugins() { // initialise any plugins where are required at app startup // e.g. Cirrious.MvvmCross.Plugins.Visibility.PluginLoader.Instance.EnsureLoaded(); } public static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e) { // Log exception info etc }