【发布时间】:2018-09-13 07:54:11
【问题描述】:
我的应用程序(有时)在从暂停中唤醒时冻结(仅限 iOS)。无论是锁定一段时间后唤醒手机,还是在另一个应用程序中运行任务后返回应用程序。
使用Xamarin.Forms 2.5.0.X
无法调试,因为Visual Studio 在您锁定屏幕或将应用移至后台(主页按钮)时与设备断开连接。
其他人有这种行为的经验吗?
我已经在我的共享项目的App.xaml.cs 的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 中重新启动应用程序。
【问题讨论】:
-
您在 OnResume 中进行的任何 API 调用是否在执行 IO?如果是这样,这可能是问题 - 阻塞 UI 线程。
-
不,不接电话什么的。我的整个
OnResume都在我的帖子中,所有电话都在OnSleep中取消。我还删除了我的应用程序中的几乎所有 OnAppearing 以防万一。也就是说,看起来我的代码可能正在运行。我在一个团队中工作,我看到的行为可能是在没有此新代码的应用程序版本上。我今天早上测试了它,它似乎达到了我的预期。 -
今天/今晚将再试一次以确保。
标签: ios xamarin.forms