質問: iOSアプリで、ホームボタンを2回押してマルチタスクバーを表示させ、当該アプリを上にスワイプして終了するのですが、これはiOSアプリのライフサイクルにおける「NotRunning」状態に相当するのでしょうか。 今自分が作っているアプリで、iOS端末実機を起動してからアプリを起動する(こちらはNotRunnning状態からスタートするので間違いないですよね)のと、上記のようにマルチタスクバーから終了させて再度起動するのでは異なる動きをしています。 単なる知識不足なだけかと思いますが、是非ご教示いただければと思います。 --- > > 異なる動きというのは具体的にどういったものでしょうか。 > > > →終了前に操作していた画面を保存し、復帰時に復元するようにしているのですが、マルチタスクバーからの終了からの再起動だと復元されず、最初の画面が表示されてしまいます。 --- > > もし - application:shouldSaveApplicationState: などで有効にする、アプリ状態の保存/復元機能を使われているのでしたら、マルチタスクバーからの強制終了で保存した状態が破棄されるのは、安全策のための仕様のようです: > > > →まさにご指摘の通りのことを行っていました。 仕様だということで理解しました、ありがとうございます。 --- > > 質問の場合を考えると、 どちらも結局は Not Running の状態となりますが、... > > > ユーザー操作による終了は suspended なアプリを終了させるのと同じ: > > > →結果的には今回の私のアプリの問題とズレた質問になってしまい申し訳ありません、 ライフサイクルの知識として1つ理解できました。
回答: ユーザー操作による終了は suspended なアプリを終了させるのと同じ: > > User-initiated termination has the same effect as terminating a suspended app. > > > App Termination とあり、Suspended の次の状態は Not running(Execution States for Apps)ですから、マルチタスクバーから終了した後の起動は、Not running 状態からスタートすると考えていいのではないかと思います。 もし `- application:shouldSaveApplicationState:` などで有効にする、アプリ状態の保存/復元機能を使われているのでしたら、マルチタスクバーからの強制終了で保存した状態が破棄されるのは、安全策のための仕様のようです: > > Deleting the preserved state information when the app is killed is a safety precaution. > > > Tips for Saving and Restoring State Information