防止应用程序在设备重新启动时关闭

问题描述:

当我重新启动设备时,我的应用程序在其上将不会保留它一旦我再次打开应用程序时的状态,它将会像我第一次打开时一样,失去了会话,不得不重新登录,我怎么能让我的应用程序保持其状态,即使通过设备重启?例如,像Twitter一样。防止应用程序在设备重新启动时关闭

+4

每次应用程序进入后台状态时,您是否保存应用程序状态?如果是这样,您可以使用保存的信息来恢复用户在应用重新启动时正在处理的内容。如果设备重新启动或应用程序由操作系统终止,则无关紧要。 – 2012-07-27 15:55:10

+0

我相信当它进入后台时我并没有保存应用程序状态,但是如果我退出应用程序,它不会丢失它的当前状态,它会从它停止的地方接收它,但是当设备重新启动时,它不会不会发生。 – 8vius 2012-07-27 15:57:24

+2

@ 8vius:我想你可能会误解一些应用程序和多任务处理在最新版本的iOS上的工作原理。考虑查看iOS应用程序编程指南的[应用程序状态和多任务处理](http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOS编程指南/管理应用程序流量/管理应用程序流量.html)部分。 – Tim 2012-07-27 16:03:19

根据您在上面添加的评论,我会尝试更正式的答案。我会开始说蒂姆发布的the link是你应该熟悉的东西。

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

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

然后,诀窍就是在进入后台状态时保存有关应用程序状态的基本信息。您可以使用应用程序代理的didEnterBackground方法,或注册UIApplicationDidEnterBackgroundNotification,并在您的活动视图控制器(或任何其他类)中调用方法。无论哪种方式,你应该保存任何你可以的状态信息。

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

然后,无论何时启动应用程序,检查是否存在保存的数据(但是您选择将其写出),并相应地设置UI。对于用户来说,它看起来好像该应用永不退出,这正是苹果希望他们想的。

+0

感谢Husker的解释,我当时只是信任苹果的魔力。 – 8vius 2012-07-27 19:39:34