C# IMvxAndroidCurrentTopActivity是单例吗?
C# IMvxAndroidCurrentTopActivity是单例吗?,c#,xamarin.android,xamarin,mvvmcross,C#,Xamarin.android,Xamarin,Mvvmcross,IMvxAndroidCurrentTopActivity可用于获取MvvmCross Android应用程序中的当前顶级活动 问题是:MvvmCross是否会在顶级活动更改后立即创建此接口的新实例,还是会重用同一实例,只更改活动属性 背景:我想将该接口作为注册为singleton的类中的构造函数依赖项。 它会工作吗?在默认的MvvmCross设置中,该接口是作为一个单例实现的,因此只要你的应用程序在内存中,它就保证返回相同的实例 请参见中的初始化平台服务 protectedoverride v
IMvxAndroidCurrentTopActivity
可用于获取MvvmCross Android应用程序中的当前顶级活动
问题是:MvvmCross是否会在顶级活动更改后立即创建此接口的新实例,还是会重用同一实例,只更改活动
属性
背景:我想将该接口作为注册为singleton的类中的构造函数依赖项。它会工作吗?在默认的MvvmCross设置中,该接口是作为一个单例实现的,因此只要你的应用程序在内存中,它就保证返回相同的实例 请参见中的
初始化平台服务
protectedoverride void InitializePlatformServices()
{
var lifetimeMonitor=new MvxAndroidLifetimeMonitor();
Mvx.RegisterSingleton(生命周期监视器);
Mvx.RegisterSingleton(生命周期监视器);
Mvx.RegisterSingleton(生命周期监视器);
Mvx.RegisterSingleton(本);
var intentResultRouter=new MvxIntentResultSink();
Mvx.RegisterSingleton(intentResultRouter);
Mvx.RegisterSingleton(intentResultRouter);
var viewModelTemporaryCache=new MvxSingleViewModelCache();
RegisterSingleton(viewModelTemporaryCache);
}
这种单例特性实际上是这个接口定义的一部分——因此,如果您要覆盖android设置,那么您应该将此注册保持为单例
一般来说,目前只有一种方法可以在MvvmCross中判断某个接口或对象是注册为单例对象还是动态按需创建对象-查看源代码
- e、 g
在未来,这可能通过XML注释或某种命名约定来实现,但我不认为这些是目前计划的,而且这两种技术都不会在编译时进行检查。感谢您的详细回答:-)
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);
}