2

LoginServiceMvvmCross (Mvx) プラグインで定義されたとそのインターフェイスがあります。

このプラグインを使用する Mvx アプリケーションのコア PCL は、次のApp.csように登録するために使用します。

        CreatableTypes(typeof(LoginService).GetTypeInfo().Assembly)
            .EndingWith("Service")
            .AsInterfaces()
            .RegisterAsLazySingleton();

次に、CustomAppStartクラスを使用してアプリを起動し、アプリを起動する ViewModel を決定します。

RegisterAppStart(new CustomAppStart(Mvx.Resolve<ILoginService>()));

CustomAppStart を次のように定義します。

        public CustomAppStart(ILoginService loginService)
        {
            _loginService = loginService;
        }

        public void Start(object hint = null)
        {
            if (!_loginService.IsLoggedIn)
            {
                ShowViewModel<LoginViewModel>();
            }
            else
            {
                ShowViewModel<HomeViewModel>();
            }
        }

2 つの部分からなる質問:

  1. プラグインで定義されている正しい構文 with CreatableTypesand RegisterAppStartto use を使用していますか?LoginService

  2. を使用RegisterAsLazySingleton()すると、リクエスト時に同じ LoginService インスタンスが取得されることはわかっていますが、そのインスタンスの有効期間はどれくらいですか? CustomAppStart で要求すると、そのインスタンスの状態は、呼び出して使用できるようにメモリに残りますか、それとも、ViewModel の 1 つがコンストラクターで ILoginService の同じインスタンスを要求したときに、Mvx が魔法のようにその状態を保存して再水和しますか?

4

1 に答える 1