我在测试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
中将Info.plist
设为true,然后按模拟器中的主页按钮所以我的问题是:为什么没有调用保存状态的方法?
答案 0 :(得分:3)
您在forums上的问题指出您使用的是iOS 5.
Apple在iOS 6中添加了状态保留。早期的iOS版本不会调用您的覆盖。
答案 1 :(得分:1)
来自Apple文档:
请注意,系统会自动删除已保留的应用 当用户强制退出应用程序时的状态。删除保留状态 应用程序被杀死时的信息是一种安全预防措施。 (系统 如果应用程序在启动时崩溃,则还会删除保留状态 类似的安全预防措施。)如果你想测试你的应用程序的能力 恢复它的状态,你不应该使用多任务栏来杀死它 调试期间的app。相反,使用Xcode杀死应用程序或杀死应用程序 通过安装临时命令或手势以编程方式应用程序 按需退出。
尝试按主页按钮。