Activityのライフサイクルを管理する
アクティビティのライフサイクルについて、具体的にアプリの画面だとどんな状態になっているのかスクショを用いて説明している記事とか見かけないので、自分なりに解釈してみました。
アクティビティの状態は大きく分けると3つに分かれるようです。
再開状態
一時停止状態
停止状態
再開状態
別名「実行中」 つまり、アプリがフォアグランド(一番前)にいて、ユーザからのフォーカスが当たっている状態 つまり、
この状態かなと
一時停止状態
他のアクティビティがフォアグラウンドに出ているが、アクティビティが生きている状態。 他のアクティビティは画面全体を覆っているわけではなく、一部が表示されている感じ。 イメージでいうと、
こんな感じ? 厳密にはアクティビティではなく、DialogFragmentなので違いますが、あくまでイメージとして。 バックのアクティビティは生きていますが、極端にメモリが足りなくなった時は破棄されます。
停止状態
他のアクティビティがフォアグランドに来たので、現在のアクティビティがバックグラウンドに隠れて見えない状態です。(若干表現はおかしいかも?)
例えば、
さがすアクティビティから上部の検索バーを押すと、
検索アクティビティに遷移します。
これは、さがすアクティビティがバックグラウンドにいき、フォアグラウンドに検索アクティビティがきた状態です。
この時、さがすアクティビティは停止状態となっています。
別のアクティビティでメモリが必要となった場合は、さがすアクティビティはシステムに強制終了される可能性があります。
以上が、大きく分けて、アクティビティの3つの状態です。
その上で、よく見かけるアクティビティのライフサイクル図を見てみます。
コールバックがいくつもありますが、結局は先ほどの3つの状態のいずれかで呼び出されることを念頭に置けば、さほどややこしくはなさそうです。
次回は各コールバックがどういう時に呼び出されるのか整理していきます。