我正在处理一个获取远程后台获取(又称无声通知)的应用。
我所做的是使用Mvx.Resolve解析服务,通过网络进行提取。当应用程序启动并投入后台时它工作正常 - 但由于它不能保证它停留在那里(低内存或人们强制关闭所有后台应用程序),因此MvvmCross不是初始化了,我需要在应用程序被唤醒时初始化它。
但是我似乎不能在那时运行Setup()和setup.Initialize(),因为Setup构造函数需要一个UIWindow(当在后台启动时将为null)并解析null,会抛出异常。
我知道Android有一个单例类,可以确保MvvmCross可用,如下所示:
var setupSingleton = MvxAndroidSetupSingleton.EnsureSingletonAvailable(this);
setupSingleton.EnsureInitialized();
但我似乎无法在iOS平台上找到这样的内容。 Setup类有一个方法EnsureInitialized(),但仍然需要我通过安装构造函数,这需要一个UIWindow,如前所述。
谁能告诉我这样做的方法? 一种解决方案是仅手动初始化所需的服务。但这似乎是一个糟糕的解决方案,因为某些服务可能需要通过MvvmCross Ioc加载其他服务。
由于