退出后在11秒内恢复应用程序崩溃(0)

时间:2011-08-09 11:34:10

标签: iphone ipad core-data crash multitasking

我有一个应用程序,可以在开始时使用Core Data导入数据。在应用程序的这一部分中,我通过在设置标志时调用applicationDidEnterBackground中的exit(0)来禁用恢复(多任务处理)。 E.g:

-(void)applicationDidEnterBackground:(UIApplication *)application {

    if (allowResuming==NO){
        NSLog(@"Terminating...");
        exit(0);
    }
}

如果我在按下主页按钮后11秒内尝试“恢复”应用程序(通过按下其图标)(因此,已经调用退出(0)),应用程序崩溃。在通过调试器运行时不会发生这种情况,但是崩溃日志表明应用程序正在尝试从中断处恢复数据导入,这当然不是我想要的。

在此次崩溃后(即在一秒钟内)尝试再次“恢复”应用程序成功。

如果我在11秒后尝试“恢复”该应用,那就没关系。

如果有人有任何想法和/或能指出我正确的方向,我将非常感激。

2 个答案:

答案 0 :(得分:6)

我认为你不应该做exit(0)。要禁用多任务处理,请将Info.plist中的密钥UIApplicationExitsOnSuspend键设置为YES。有关详细信息,请参阅选择退出后台执行部分 http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html#//apple_ref/doc/uid/TP40007072-CH3-SW1

要放弃应用程序离开前台时完成的部分工作,请为UIApplicationWillResignActiveNotification or UIApplicationDidEnterBackgroundNotification添加一个侦听器。在处理程序方法中,您可以执行类似 -

的操作
[self discardPartialWorkDone];

HTH,

阿克沙伊

答案 1 :(得分:0)

你不应该像Akshay所说的那样使用exit(0)。除此之外,Apple可能会拒绝您的应用程序,因为包含中断应用程序的代码的应用程序不会被批准。