ios - 当应用程序进入后台时,加载的数据到底会发生什么

标签 ios swift

我是 IOS 开发新手。我仍然对 UIViewController 内的数据生命周期感到困惑。如果我有一个名为“userData”的属性,并且我将其标识为以下内容

let userData : UserData! {
 didSet {
 // do something
}
}

我稍后使用这些数据来处理点击事件。如果应用程序转到后台,然后(例如 1 小时后)用户重新打开应用程序并发现页面仍在显示内容,然后他单击页面内的按钮,会发生什么情况。我不确定 userData 是否会被保留,或者页面在进入后台时会丢失它!?

当我稍后打开它时,我的应用程序崩溃了,但我不确定这是否是因为识别了这样的变量

最佳答案

术语背景令人困惑。 Apple 通常用它来表示您的应用程序仍在获得处理器时间但另一个应用程序位于最前面的状态。您必须询问当用户点击主页按钮时是否需要超过几秒钟的后台时间。

如果用户按下主页按钮,然后切换到另一个应用程序,您的应用程序将获得几秒钟的后台时间来保存其状态,然后它会移动到“挂起”状态,该状态仍然在内存中,但不会获得处理器时间更长。

暂停后,如果用户在应用程序仍在内存中时切换回您的应用程序,您会收到一条恢复消息,然后继续运行,内存中的所有内容仍保留在内存中。

但是,一旦您被暂停,您的应用程序可以随时终止,而不会发出任何警告。这就是为什么您必须在暂停时保存应用程序状态的原因。

如果您确实被终止,那么下次用户选择您的应用程序时,您将重新启动。您通常需要恢复状态并使其看起来像是应用程序只是从中断处继续,但这是一次冷启动。

如果您的应用程序恢复(而不是终止)后崩溃,那么您可能需要帮助调试该崩溃。

关于ios - 当应用程序进入后台时,加载的数据到底会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48101898/

相关文章:

ios - Swift - 游戏的计时器倒计时

ios - 当文本字段等于 nil 时隐藏按钮,当不为零时显示按钮

ios - 自定义表格 View 标题的左上角和右上角

ios - 仅以英文获取用户的城市

iphone - 将 UIImage 保存为 NSData 时的缩放问题

ios - Flash Builder - iPad 3 分辨率

iOS - 限制使用单个应用程序

swift - 在包含上使用 "!"

IOS - 委托(delegate)与通知

swift - 如何向每个表格 View 行添加从 1 开始的数字