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);ます (これにより、アプリケーションがハングします)
  • UIApplicationExitsOnSuspendtrue に設定しInfo.plist、シミュレーターでホーム ボタンを押します。

だから私の質問は: 状態を保存するメソッドが呼び出されないのはなぜですか?

4

2 に答える 2

3

ここを指すフォーラムでのあなたの質問は、iOS 5 を使用していると述べています。

状態保持は Apple によって iOS 6 に追加されました。以前の iOS バージョンでは、オーバーライドが呼び出されません。

于 2013-10-22T15:31:10.380 に答える
1

アップルのドキュメントから:

ユーザーが強制的にアプリを終了すると、システムはアプリの保存状態を自動的に削除することに注意してください。アプリが強制終了されたときに保持されている状態情報を削除するのは、安全上の予防措置です。(同様の安全対策として、アプリが起動時にクラッシュした場合も、システムは保存された状態を削除します。) アプリの状態を復元する機能をテストする場合は、デバッグ中にマルチタスク バーを使用してアプリを強制終了しないでください。代わりに、Xcode を使用してアプリを強制終了するか、一時的なコマンドまたはジェスチャをインストールして、必要に応じて終了を呼び出すことにより、プログラムでアプリを強制終了します。

代わりにホームボタンを押してみてください。

于 2013-10-21T15:15:09.440 に答える