苹果公司的文档“应用国和多任务处理” (见“怎么办时,移动到后台”)说的,当应用程序被切换到后台保存:
保存用户数据和应用程序的状态信息。 所有未保存的更改应在进入后台时被写入到磁盘。 这一步是必要的,因为你的应用程序可能会在后台运行任何原因被杀害悄然而。 您可以根据需要从后台线程执行此操作。
当我开始派遣操作例如,用于保存这需要一些时间applicationDidEnterBackground:
像下面按home键时,我没有得到的NSLog输出。 返回到应用程序后,将显示的NSLog输出。
- (void)applicationDidEnterBackground:(UIApplication *)application {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performOperation];
NSLog(@"Operation finished");
});
}
我可以肯定的是, performOperation
完全执行的方法还是根本中断时,应用程序进入睡眠模式?
请确保您有plist
键设置UIApplicationExitsOnSuspend
设置为无,确保applicationDidEnterBackground
被调用。
下一步要确保你开始一个长期运行的任务。 在你的情况是这样的:
- (void)applicationDidEnterBackground:(UIApplication *)application {
UIBackgroundTaskIdentifier __block bgTask = nil;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performOperation];
NSLog(@"Operation finished");
});
}
这样,你告诉应用程序流连了10分钟,同时完成了。 在十分钟结束时到期处理程序被调用。
此外,您可以设置所需要的背景模式键,以获得更多的时间。 有许多关于这个黑客和变化,可以使用我上面提到的东西,让你更多的时间。
我将使用不同类型的记录只是可以肯定的:
灵活的iOS记录
通过添加该记录到你的项目,你可以检查你的项目的日志,不管,如果你是要管理调试与否 - >设备 - >“您的设备” - >控制台。
我觉得这是最好的方式,它已帮助了我很多,当我不知道我是否可以调试的东西。