Xamarin表示iOS冻结唤醒

时间:2018-04-03 21:27:42

标签: ios xamarin.forms

我的应用程序(有时)因暂停而醒来(仅限iOS)。是否在锁定手机一段时间后将手机唤醒,或者在另一个应用程序中运行任务后返回应用程序。

使用Xamarin.Forms 2.5.0.X

无法调试,因为Visual Studio会在您锁定屏幕或将应用移至后台(主页按钮)时与设备断开连接。

是否有其他人有此行为的经验?

我已经在App.xaml.csOnSleep方法的共享项目OnResume中设置了内容,希望能够解决问题,但似乎无法正常工作。

protected override void OnSleep()
        {
            StorageHelper.SetSleepTime(DateTime.Now);
            StorageHelper.PersistStorage();
            ApiHelper.CurrentAccess.CancelAllRequests();
        }

        protected override void OnResume()
        {
            var access = ApiHelper.RefreshApiAccess();
            access.UseCredentialGenerator = true;
            var sleepTime = StorageHelper.GetSleepTime();
            if (!sleepTime.HasValue || DateTime.Now.Subtract(sleepTime.Value).TotalMinutes >= MinutesToSleepForReset)
            {
                MainPage = new TransitionNavigationPage(new StartPage());
                StorageHelper.RemoveSleepTime();
            }
            else
            {
                NavigationHelper.UpdateCartItemCount();
            }
        }

SetSleepTime只存储OnSleep方法被调用的时间,因此如果它已经睡了超过5分钟,我基本上可以在OnResume中重新启动应用程序。

1 个答案:

答案 0 :(得分:1)

看起来答案只是确保您不会等待任何api调用返回,并确保没有阻止OnAppearing上的ui线程。检查可能导致此问题的iOS方法中的登录。

只需在5分钟后将我的应用程序重置回初始化页面即可解决。我找到了互联网上的某个地方(不记得我发布的地方)ClientsViewController允许你的应用在睡眠后继续执行10分钟(完成流程)。所以我认为在此之后的任何时候,它会为更紧迫的任务重新分配内存,导致应用程序无法从睡眠时的确切位置继续执行所需的内容。