gpt4 book ai didi

android - 使用 MvvmCross 构建的 Xamarin Android 应用程序在 3-4 天后从后台恢复时卡在启动画面上

转载 作者:行者123 更新时间:2023-11-29 18:43:08 25 4
gpt4 key购买 nike

我正在开发一个使用 MvvmCross 版本 3.5.1 的 Xamarin Android 项目。我面临一个我们认为可能是因为 MvvmCross 设置失败的问题。应用程序基本上适用于 Android 和 iOS 两个平台。但是,我面临着一个专门针对 Android 的问题。应用程序很旧,过去 3-4 年一直在开发中,从未升级到最新发布的 MvvmCross 版本。更新 MvvmCross 是我最后的选择。但在此之前,我想通过了解它的根本原因和重现它的方法来解决这个问题。

场景:

1) Android 设备上安装了应用程序,登录完成。

2) 应用移至后台。

3) 3-4 天后,通过点击应用启动器恢复应用 图标并卡在初始屏幕上。

4) 当
从手机设置强制停止

如果不将其置于后台超过 3-4 天,我将无法重现此问题。您能否提出一些方法来了解根本原因以及重现此问题的步骤,而无需将应用程序置于后台超过 4 天。

下面从 MvvmCross 打印的日志和应用程序在启动屏幕上卡住。粗体日志语句“没有可用的 View 模型类型查找器 - 假设我们正在寻找启动画面 - 返回 null”打印 3-4 次,然后应用程序卡在启动画面上。即使应用程序卡在启动画面上。推送通知由应用程序接收。

设置:PlatformServices 启动“

Setup: MvvmCross settings start"

设置:单例缓存启动"

“mvx”:“没有可用的 View 模型类型查找器 - 假设我们正在寻找启动画面 - 返回 null”

“mvx”:“没有可用的 View 模型类型查找器 - 假设我们正在寻找启动画面 - 返回 null”

“mvx”:“没有可用的 View 模型类型查找器 - 假设我们正在寻找启动画面 - 返回 null”

请帮助我了解为什么上面的粗体日志语句打印了 3-4 次,以及为什么不打印来自 _setup.InitializeSecondary() 的日志,然后应用程序卡在启动画面上。由于某些死锁或竞争条件,看起来设置卡在两者之间。如果您有任何建议以了解了解根本原因的可能性以及重现此问题的方法,那将对我真正有帮助。提前致谢。

更新:我们能够通过评论来自 MvxAndroidSetupSingleton->InitializeFromSplashScreen() 的 InitializeSecondary() 调用和应用卡在启动画面上来重现这种情况。请建议修复这个从应用程序级代码卡住的闪屏。基本上,我们不想修改 MvvmCross 代码,而是想从应用程序代码中修复。感谢您的帮助。根据日志,未执行来自 MvxAndroidSetupSingleton.cs 的以下方法中的一行代码 _setup.InitializeSecondary();。只有在将应用程序在后台保留超过 4-5 天后,此问题才会重现。首先,我想知道为什么在这种特殊情况下会发生这种情况,然后再解决。提前致谢

注意:我在我的应用程序中使用 Android 前台服务

public virtual void InitializeFromSplashScreen(IMvxAndroidSplashScreenActivity splashScreen) { 锁(锁对象) { _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();
}
});
}

最佳答案

我们在 MvvmCross 中对应用启动做了很多改进。因此,您的问题很可能已在较新版本中得到解决。

尽管如此,因为它说“没有可用的 View 模型类型过滤器”,这可能意味着启动过程尚未完成或正在做某事而无法找到它想要继续的下一个 ViewModel。

关于android - 使用 MvvmCross 构建的 Xamarin Android 应用程序在 3-4 天后从后台恢复时卡在启动画面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52611174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com