重启iOS设备时的应用行为(应用正在运行)

时间:2012-01-12 18:08:51

标签: iphone ios cocoa-touch

我面临一个奇怪的问题。我的iPhone应用程序受密码保护,只有在输入正确的密码后,用户才能再次登录。该应用程序还有多个屏幕。

假设我在特定的屏幕上(登录后)并关闭设备(应用程序仍在运行),打开设备并启动我的应用程序,它从屏幕开始返回,当设备显示时重新启动。密码屏幕未显示,似乎从未调用applicationDidFinishLaunching。当我从后台杀死应用程序并再次启动它时,它正常工作。

当设备重启时,应用程序是否会丢失内存中的所有数据?难道不会再次提出意见吗?在这种情况下,应用程序的确如何表现。

修改 我做了TriPhoenix的建议。我观察到的是,如果您很快打开设备并启动应用程序,则不会调用applicationDidBecomeActive委托方法。但是如果你在发布之前给它一些时间,一切似乎都按预期工作。是不是应该在每个应用程序启动时调用applicationDidBecomeActive方法?

我正在测试的内容: 操作系统:iOS 5.0.1 Xcode:4.2.1 设备:iPhone 4s

1 个答案:

答案 0 :(得分:2)

您的应用在内存使用方面是否可能非常小?我记得有一个WWDC演讲(现在不能找到合适的演讲),据说在内存使用方面非常小的应用程序(限制未公开定义,但我认为它大约是16 MiB内存使用量)并没有被杀死低内存条件,但暂停到手机的闪存,以便以后唤醒。我不确定这是否能够在完全停机后存活,但它肯定是为数不多的可能性之一。要检查这一点,您可以尝试通过创建一些大型对象/数组来人为地增加内存使用量,并查看问题是否消失。

在任何情况下,可能有更好的功能来重新激活密码保护,例如applicationWillEnterForeground:applicationDidBecomeActive:,因为这应涵盖用户可能返回您应用的所有可能性。