5

G'day iOS 大师的,

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

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

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

都好。

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

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

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

4

2 回答 2

3

如果 iOS 需要额外的资源来执行前台发生的任何事情,iOS 可以并且将会在后台终止您的应用程序。

您需要确保在您的应用程序终止时保存/存档您的数据,并在重新启动时解包,以便返回用户上次所在的位置。执行此操作的传统方法是使用该applicationDidEnterBackground方法,该方法在您的应用程序暂停时调用。然后,您可以保存所需的所有数据,以便在您的应用程序稍后终止时干净地恢复。

但是,如果您的目标是 iOS 6 及更高版本,您可以利用一个新功能 -状态推定和恢复(链接到文档)。状态恢复将部分(但不是全部)繁重的工作卸载到 iOS 上,它可以自动为您的 UI 拍摄快照,并提供更简单的方法来保存和恢复数据。

于 2013-06-03T09:08:14.880 回答
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
}
于 2013-06-03T09:02:44.887 回答