2012-06-07 37 views
0

我正在维护客户端的iPhone应用程序。该应用程序不会在后台运行(应用程序不会在设置plist中的background = YES中运行)。但是,当用户暂时中断(例如通过电话)或应用程序存在时,用户需要注销。我目前在applicationWillResignActive中执行此操作。我首先想到了使用beginBackgroundTaskWithExpirationHandler,但后来发现返回值总是“UIBackgroundTaskInvalid”。我认为这是因为我无法在后台运行。那么问题是,我应该如何处理注销?我应该使注销同步,并希望它按时完成(我猜在10秒内?)。UIBackgroundModes,注销临时(或永久)退出

起初我并不知道这个beginBackgroundTaskWithExpirationHandler没有返回有效的后台任务标识符,并且应用程序正在注销。除了其中一个用户保持具有“已经超出允许的时间积极断言”崩溃(在iPad 1)。

任何人处理这个问题呢?

回答

0

如果您的应用程序没有背景,那么你就需要做你的注销在所提供的-applicationWillTerminate:方法,这时候,那里有一个中断或应用程序被关闭哪些将被称为

- (void)applicationWillTerminate:(UIApplication *)application { 
/* 
Called when the application is about to terminate. 
Save data if appropriate. 
*/ 

} 
+0

applicationWillTerminate:。不会被调用的中断(如电话),甚至当应用程序不支持背景applicationWillResignActive:不过,被调用,而这正是whe现在我正在登录用户。它工作正常,除了iPad 1偶尔的崩溃,让我担心我在做什么。基本的问题是,当你不运行后台模式时,你如何确保用户注销?应用程序完成任务需要多长时间,并且此任务是否必须在UI线程上? –