我在 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键
所以我的问题是:为什么不调用保存状态的方法?