公式のライフサイクルがちょっと分かりにくい
Activity | Android Developers に載ってる図。
状態のフローなんだか処理のフローなんだかどっちつかずでややこしい。
何度見ても頭に入らないから毎度毎度図を見直すことになる。
状態遷移図として表現すると分かりやすい
こんな感じです。どうでしょうか。
あくまでも図の形式は状態遷移図で、ハンドラ呼び出しは矢印に現れるだけ。
アクティビティ作成
アクティビティが作成されると、「未作成」状態から「最前面」状態へと一気に遷移する。
その過程で onCreate, onStart, onResume が呼ばれる。
半透明な他のアクティビティに覆われたとき
他のアクティビティが手前に来たら「非最前面」状態に遷移する。
その過程で onPause が呼ばれる。
手前に来た他のアクティビティが半透明の場合、
元のアクティビティは透けて見えるので、「非最前面」状態でありながらも「可視」状態となる。
不透明な他のアクティビティに隠されたとき
不透明な他のアクティビティが手前に来ると、
元のアクティビティは「不可視」状態へ遷移する。
その過程で onPause, onStop が呼ばれる。
「最前面」状態からの終了
「最前面」状態から「未作成」状態へと一気に遷移する。
その過程で onPause, onStop, onDestroy が呼ばれる。
「不可視」状態からの終了
「未作成」状態へと遷移する。
その過程で onDestroy が呼ばれる。
不揃いなハンドラ onRestart について
onCreate / onDestroy, onStart / onStop, onResume / onPause と、せっかく対象的にメソッドが定義されているのに、onRestart だけがその秩序から外れている気がします。個人的にはあまり美しいと感じません。図にも入れませんでした。
onStart の引数とかに restart フラグ持たせれば良かったんじゃないかなぁ。