应用程序从后台唤醒时重新启动

时间:2013-06-03 09:00:08

标签: ios background-process

G'day iOS Guru,

我已经广泛搜索了一个答案,但找不到答案(我打赌我的问题的第一个回答将是另一个类似的问题,但我找不到)。

无论如何,我的问题是我正在运行一个简单的地图应用程序,用户可以在地图上放置引脚,并在丢弃的引脚周围使用自定义的圆形覆盖。

当应用程序进入后台时(iphone锁定或按下主页按钮),如果我在约5分钟内重新进入应用程序,则引脚仍在那里,应用程序将重新打开到最后一个屏幕。

一切都很好。

但是,如果我将应用程序留在后台超过5分钟,应用程序将重新启动并且所有引脚都将丢失。

我在plist中有“应用程序不在后台运行= NO”,并且还在所需的后台模式下启用了“应用寄存器以进行位置更新”。

如何阻止应用在进入后台并加载上次打开的视图后重新启动?

2 个答案:

答案 0 :(得分:2)

如果需要额外的资源来执行前台正在进行的操作,iOS可以并且将会在后台终止您的应用。

您需要确保在终止应用时保存/存档数据,并在重新启动时解压缩以便返回用户的最后用户。执行此操作的传统方法是使用applicationDidEnterBackground方法,该方法在您的应用暂停时调用。然后,您可以保存所需的所有数据,以便在以后终止您的应用程序时彻底恢复。

但是,如果您的目标是iOS 6及更高版本,则可以使用新功能State Presumption & Restoration (link to documentation)。状态恢复将部分(但不是全部)重负荷卸载到iOS上,它可以自动对UI进行快照,并提供更简单的方法来保存和恢复数据。

答案 1 :(得分:0)

你的AppDelegate.m

中的

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    // Save your data
}