iphone - 防止应用程序在设备重启时关闭

标签 iphone ios ipad

当我重新启动我的应用程序所在的设备时,它不会保留它在我再次打开该应用程序后的状态,就像我第一次打开一样,丢失 session 并不得不重新登录, 如何让我的应用程序即使在设备重启后也能保持其状态?例如,就像 Twitter 一样。

最佳答案

我会根据您在上面添加的评论尝试更正式的回答。我首先要说 the link Tim 发布的是您应该熟悉的内容。

当您的应用程序运行时,它处于前台状态。当您使用主页按钮“退出”应用程序时,您并不是真的退出它;你只是把它推到背景状态。在后台状态几秒钟后,操作系统会自动将应用程序移至暂停状态。如果您在几分钟内回来,您的应用程序仍在内存中,因此操作系统只是将它按原样放回屏幕上。

但是,如果您暂时离开该应用程序并使用其他应用程序,则操作系统可以在不发出警告的情况下随时从内存中清除您的应用程序。这称为“未运行”状态。现在,当再次打开应用程序时,它必须从头开始。显然,当设备重新启动时会发生同样的事情——所有应用程序都从内存中清除。

那么,诀窍就是在应用程序进入后台状态时保存有关应用程序状态的基本信息。您可以使用应用程序委托(delegate)的 didEnterBackground 方法,或注册 UIApplicationDidEnterBackgroundNotification 并调用事件 View Controller (或任何其他类)中的方法。无论哪种方式,您都应该尽可能保存状态信息。

如何保存这些信息?有几种策略。对于一个简单的应用程序,也许您可​​以将一些设置注册为 NSUserDefaults。或者你可以写出一个包含用户正在处理的任何数据的文件。这完全取决于您。

然后,每当应用程序启动时,检查保存的数据是否存在(无论您选择将其写出),并相应地设置 UI。对于用户来说,应用程序似乎永远不会退出,这正是 Apple 希望他们想到的。

关于iphone - 防止应用程序在设备重启时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691138/

相关文章:

iphone - 在禁用UIButton上

objective-c - 破解iOS应用程序的源代码

javascript - 如何在 javascript 中查找移动 safari/iphone 中的当前 "scroll"偏移量

ios - 如何在后台线程调用API?

ios - 这种 autoRelease 的用法有什么潜在的问题吗?

objective-c - MGSplitView Controller 框架变化

ios - Safari iOS 9.1 中的 webapp 加载时间慢

ios - iPad 应用程序支持的平台?

ios - 无法在 UILabel 中设置自定义字体(iPad 应用程序)

ios - 将字符串转换为 int 以检查答案