我的应用程序(有时)冻结从暂停状态(仅限iOS)冻结 . 是否在锁定手机一段时间后将手机唤醒,或者在另一个应用程序中运行任务后返回应用程序 .
使用 Xamarin.Forms 2.5.0.X
无法调试,因为 Visual Studio
在您锁定屏幕或将应用程序移动到后台(主页按钮)时与设备断开连接 .
有没有其他人有这种行为的经验?
在 OnSleep
和 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 回答
它's looking like the answer is just make sure you'不等待任何api调用返回,并确保没有阻止
OnResume
上的ui线程 . 检查可能导致此问题的OnAppearing
方法中的登录 .通过在5分钟后将我的应用程序重置回初始化页面,似乎解决了我的问题 . 我在互联网上找到了某个地方(可以't remember where otherwise I'发布)
iOS
允许你的应用在睡眠后继续执行10分钟(完成流程) . 因此,我认为在此之后的任何时候,它会为更紧迫的任务重新分配内存,导致应用程序无法从睡眠时的确切位置继续执行所需的内容 .