ios - 从后台唤醒时应用重新启动

标签 ios background-process

你好 iOS 大师,

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

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

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

一切顺利。

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

我在 plist 中有“Application does not run in background = NO”,并且还在 Required background modes 下启用了“App registers for location updates”。

如何防止应用进入后台并加载上次打开的 View 后重启?

最佳答案

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

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

但是,如果您的目标是 iOS 6 及更高版本,则可以利用一项新功能 - State Presumption & Restoration (link to documentation) .状态恢复将一些(但不是全部)繁重的工作卸载到 iOS 上,它可以自动为您的 UI 快照并提供更简单的方法来保存和恢复数据。

关于ios - 从后台唤醒时应用重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16893185/

相关文章:

iphone - 切换后台任务时 SIGPIPE 崩溃

linux - 将输入重定向到后台运行的脚本

cordova - 使用 AngularJS 和 Ionic 访问 PhoneGap 中运行的后台进程

ios - 如何更改 AVPlayer 视频的速率

ios - 如何加载第二个 View ,可以通过它看到第一个 View (透明),在 ios 9

ios - 从 iPhone 设备查找当前国家

android - 获取正在运行的应用程序 flutter

javascript - 为什么在执行 ajax 请求时我的页面会锁定?

iphone - 来自 xib 的自定义 UITableViewCell 显示不正确

ios - 是否有iOS “Player Controller”可以播放音频?