首页 文章

Xamarin表示iOS冻结唤醒

提问于
浏览
1

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

使用 Xamarin.Forms 2.5.0.X

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

有没有其他人有这种行为的经验?

OnSleepOnResume 方法中我希望能够处理这个问题,但它似乎没有起作用 .

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 回答

  • 1

    它's looking like the answer is just make sure you'不等待任何api调用返回,并确保没有阻止 OnResume 上的ui线程 . 检查可能导致此问题的 OnAppearing 方法中的登录 .

    通过在5分钟后将我的应用程序重置回初始化页面,似乎解决了我的问题 . 我在互联网上找到了某个地方(可以't remember where otherwise I'发布) iOS 允许你的应用在睡眠后继续执行10分钟(完成流程) . 因此,我认为在此之后的任何时候,它会为更紧迫的任务重新分配内存,导致应用程序无法从睡眠时的确切位置继续执行所需的内容 .

相关问题