我正在从事一个使用MvvmCross 3.5.1版本的Xamarin项目。我正面临一个问题,我们认为可能是因为MvvmCross设置失败。App基本上适用于安卓和iOS两种平台。但是,我正面临一个专门针对Android的问题。App很老,从过去的3-4年开始开发,从未升级到最新发布的MvvmCross版本。更新MvvmCross是我的最后一个选择。但在此之前,我想通过了解这个问题的根源和再现它的方法来解决这个问题。
场景:
1)应用程序安装在Android设备上,完成登录。
2)应用程序移到后台。
3) 3~4天后,应用程序继续运行,点击app启动图标并粘在飞溅屏幕上。
4)应用程序重新开始工作时
force stop from phone setting我无法复制这个问题,除非把它放在背景超过3-4天。请您建议一些方法,以了解根本原因和步骤,以复制这个问题,而不把应用程序的背景超过4天。
下面的日志打印从MvvmCross和应用程序冻结在飞溅屏幕上。log语句以粗体“无视图模型类型查找器可用-假设我们正在寻找一个启动屏幕-返回空”打印3-4次,然后应用程序卡在启动屏幕上。即使应用程序停留在飞溅屏幕上。推送通知由应用程序接收。
安装程序: PlatformServices启动“
安装程序: MvvmCross设置启动“
安装程序:单点缓存启动“
"mvx":“没有可用的视图模型类型查找器-假设我们正在寻找一个启动屏幕-返回空”
"mvx":“没有可用的视图模型类型查找器-假设我们正在寻找一个启动屏幕-返回空”
"mvx":“没有可用的视图模型类型查找器-假设我们正在寻找一个启动屏幕-返回空”
请帮助我知道为什么上面的粗体日志语句被打印了3-4次,为什么_setup.InitializeSecondary()的日志没有被打印出来,然后应用程序就开始运行了。看起来,由于某些死锁或争用条件,安装程序挂在中间。如果你有任何建议去了解可能的问题,了解根本原因,以及重现这个问题的方法,这将对我很有帮助。提前谢谢。
MvxAndroidSetupSingleton->InitializeFromSplashScreen()更新:更新:我们可以通过在Splash屏幕上注释来自和应用程序的InitializeSecondary()调用来复制这个场景。请建议修复这个从应用程序级代码卡住的启动屏幕。基本上,我们不想修改MvvmCross代码,而是希望从应用程序代码中修复。谢谢你的帮助。根据日志,不执行来自MvxAndroidSetupSingleton.cs的下面方法中的一行代码MvxAndroidSetupSingleton.cs。这个问题是被复制后,保持申请在背景超过4-5天。首先,我想知道为什么在这个特殊的情况下会发生这种情况,然后解决这个问题。提前感谢
备注:在我的应用程序中使用Android前台服务
公开虚虚InitializeFromSplashScreen(IMvxAndroidSplashScreenActivity splashScreen) { lock (LockObject) { _currentSplashScreen = splashScreen;
if (_initializationStarted)
{
if (_initialized)
{
_currentSplashScreen.InitializationComplete();
return;
}
return;
}
_initializationStarted = true;
}
_setup.InitializePrimary();
ThreadPool.QueueUserWorkItem(ignored =>
{
_setup.InitializeSecondary();
lock (LockObject)
{
_initialized = true;
if (_currentSplashScreen != null)
_currentSplashScreen.InitializationComplete();
}
});
}发布于 2018-10-03 06:32:33
我们已经对MvvmCross的应用程序启动做了很多改进。所以很有可能你的问题已经用一个更新的版本解决了。
虽然,由于它说的是“没有视图模型类型的过滤器可用”,这可能意味着启动过程还没有完成或被困在做某事,无法找到下一个ViewModel,它想继续。
发布于 2018-10-03 08:11:42
Android将记忆清除一个应用程序,如果它是长在后台,或未使用。这意味着mvvm框架在内存中丢失了与IOC容器相同的所有引用。通常,mvvm框架应该能够处理这个问题,但在我的经验中,有时您必须手动推动它。
https://stackoverflow.com/questions/52611174
复制相似问题