1

我在 iOS 5 中测试应用程序状态的保存时遇到问题:当我退出应用程序时,没有调用任何用于保存状态的重载。

以下是我如何重载保存状态的方法:

[Register("AppDelegate")]
public class AppDelegate : UIApplicationDelegate
{
    ...            
    public override bool ShouldSaveApplicationState(UIApplication application, NSCoder coder)
    {
        Data.Save(coder);
        return true;
    }

    public override void WillEncodeRestorableState(UIApplication application, NSCoder coder)
    {
        Data.Save(coder);
    }

以下是我用于退出应用程序的方法,据我了解,这些方法中的每一个都应该触发状态保存调用(但它们不会):

  • 按下主页按钮
  • 打电话UIApplication.SharedApplication.PerformSelector(new Selector("terminateWithSuccess"), null, 0f);
  • 调用Environment.Exit(0);(这将导致应用程序挂起)
  • 在模拟器中设置UIApplicationExitsOnSuspend为trueInfo.plist并按下home键

所以我的问题是:为什么不调用保存状态的方法?

4

2 回答 2

3

您在论坛上指向此处的问题表明您正在使用 iOS 5。

Apple 在 iOS 6 中添加了状态保存。早期的 iO​​S 版本不会调用您的覆盖。

于 2013-10-22T15:31:10.380 回答
1

来自苹果文档:

请注意,当用户强制退出应用程序时,系统会自动删除应用程序的保留状态。在应用程序被杀死时删除保留的状态信息是一种安全预防措施。(作为类似的安全预防措施,如果应用程序在启动时崩溃,系统也会删除保留状态。)如果您想测试应用程序恢复其状态的能力,则不应在调试期间使用多任务栏杀死应用程序。相反,使用 Xcode 终止应用程序或通过安装临时命令或手势以按需调用退出以编程方式终止应用程序。

尝试按主页按钮。

于 2013-10-21T15:15:09.440 回答