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

G'day iOS大师的,

我已经广泛search了一个答案,但找不到一个(我敢打赌,我的问题的第一个答复将是另一个类似的问题,但我无法find它)。

无论如何,我的问题是,我正在运行一个简单的地图应用程序,用户可以在地图上放置一个定制的圆圈覆盖在引脚上的引脚。

当应用程序进入后台(iPhonelocking或主页button按下),如果我在5分钟内重新进入应用程序,引脚仍然在那里,应用程序重新打开到最后一个屏幕。

都好。

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

我在plist中有“应用程序不在后台运行= NO”,并在所需的后台模式下启用了“位置更新的应用程序注册”。

如何防止应用程序在进入后台并加载最后打开的视图后重新启动?

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

您需要确保您的数据在应用程序终止时保存/归档,并在重新启动时解压,以便返回到用户最后的位置。 传统的做法是使用applicationDidEnterBackground方法,在应用程序被挂起时调用。 然后,您可以保存所有需要的数据,以便在您的应用程序稍后终止的情况下恢复干净。

但是,如果您的目标是iOS 6或更高版本,则可以利用新function – 状态推定和恢复(链接到文档) 。 恢复状态可以减轻一些(但不是全部)的负担,它可以自动快照您的用户界面,并提供更简单的方法来保存和恢复数据。

在你的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 }