最近、大手企業の面接でアクティビティのライフサイクルについて質問されました。面接官はonSaveInstanceState
電話が onStop の前か後かを強調して尋ねました。当時は少し混乱していて、支払いもしていませんでした。 onStop の前か後かに注意してください。
しかし、このメソッドがいつ呼び出されるかは重要でしょうか? データを保存して復元するためにのみ使用しますonRestoreInstanceState
。
重要かどうかは関係なく、面接官が質問してあなたが知らないのですから、確認しに行きましょう。
その後、作者が個人的にコードを書いて検証したところ、onStop の後に呼び出されていることが分かりましたが、同時にネットで他の人の回答も読んだところ、多くの資料が onPause の後、onStop の前に書かれていることが分かりました。私が個人的に確認したということは信頼できるのではないでしょうか?
そこで著者はGoogleの公式サイトにアクセスして公式の説明を確認したのですが、それを読んで衝撃を受けました。この方法については学ぶべきことがたくさんあることがわかりましたonSaveInstanceState
。
まずスクリーンショットを撮ります。
公式説明によると、このメソッドはアクティビティがシステムによって強制終了されたときにデータを保存するために使用されており、アクティビティの復元時またはライフサイクル中にデータを復元できonCreate
ますonRestoreInstanceState
。
onSaveInstanceState
重要な点は、説明の最後の段落で、アプリケーションのターゲット プラットフォームが Android P (9) の場合、呼び出される場合はonSaveInstanceState
onStop の後に呼び出されること、ターゲット プラットフォームが Android 9 より前の場合、それが呼び出されることがonSaveInstanceState
指摘されていることです。onStop の前に呼び出されますが、onPause であることは保証されません。前または後に呼び出されます。
私の認証がonStopの後だったのに、オンラインプロフィールではonStopの前だった理由がようやく分かりました。
では、onRestoreInstanceState
同様の違いはあるのでしょうか?
状況に応じて、と の間でこのメソッドが呼び出されますが、バージョンの違いはありませんonStart
。onPostCreate