デフォルトの MvvmCross セットアップでは、そのインターフェースはシングルトンとして実装されているため、アプリがメモリ内にある限り、同じインスタンスを返すことが保証されています
https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Droid/Platform/MvxAndroidSetup.cs#L76を参照InitializePlatformServices
して ください。
protected override void InitializePlatformServices()
{
var lifetimeMonitor = new MvxAndroidLifetimeMonitor();
Mvx.RegisterSingleton<IMvxAndroidActivityLifetimeListener>(lifetimeMonitor);
Mvx.RegisterSingleton<IMvxAndroidCurrentTopActivity>(lifetimeMonitor);
Mvx.RegisterSingleton<IMvxLifetime>(lifetimeMonitor);
Mvx.RegisterSingleton<IMvxAndroidGlobals>(this);
var intentResultRouter = new MvxIntentResultSink();
Mvx.RegisterSingleton<IMvxIntentResultSink>(intentResultRouter);
Mvx.RegisterSingleton<IMvxIntentResultSource>(intentResultRouter);
var viewModelTemporaryCache = new MvxSingleViewModelCache();
Mvx.RegisterSingleton<IMvxSingleViewModelCache>(viewModelTemporaryCache);
}
このシングルトンの性質は、実際にはこのインターフェイスの定義の一部です。そのため、Android のセットアップをオーバーライドする場合は、この登録をシングルトンとして保持する必要があります。
一般的なレベルでは、インターフェイスまたはオブジェクトがシングルトンとして登録されているか、動的なオンデマンド作成オブジェクトとして登録されているかを MvvmCross で現在確認する唯一の方法があると思います-ソースを確認する
将来的には、これは XML コメントまたは何らかの命名規則を介して実現される可能性がありますが、現在これらが計画されているとは思えませんし、これらの手法のいずれもコンパイル時にチェックされることはありません。