我的iOS应用不在后台运行。当主页按钮被点击时,应用程序将终止。
以下是我的代码
- (void)applicationDidEnterBackground:(UIApplication *)application
{
double sleepTime = [[UIApplication sharedApplication] backgroundTimeRemaining] - 1;
[self performTaskforTime:sleepTime];
}
如果应用程序很快重新启动,则应用程序的新实例将被终止并显示错误:
异常类型:00000020例外代码:0x8badf00d突出显示 线程:0
特定于应用程序的信息:My_App无法及时启动
我不能减少睡眠时间。对此有什么解决方案吗?
答案 0 :(得分:0)
您需要从- (void)applicationDidEnterBackground:(UIApplication *)application
返回,执行以下操作:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIBackgroundTaskIdentifier btid = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
double sleepTime = [[UIApplication sharedApplication] backgroundTimeRemaining] - 1;
dispatch_async(/* background queue */, ^{
[self performTaskforTime:sleepTime];
[[UIApplication sharedApplication] endBackgroundTask:btid];
}
}
您不希望使用长时间运行的任务阻止主队列,否则您将无法为UI提供服务。您的应用程序正忙于-performTaskforTime:
,因此无法及时启动。
答案 1 :(得分:0)
您无法阻止主应用程序线程超过几秒钟。见SO帖子。