Activityに関するPart3。Activityの遷移をコールバックの視点からまとめる。
Part1~Part2で記述したさまざまなActivityの遷移シナリオを実行したときのActivityコールバックをダンプして時系列表で並べてみた。
一般的なStandardアクティビティをスタックするシナリオはActivityのライフサイクルの基本中の基本であり、どういったタイミングで各コールバックが呼ばれるかを念頭に入れて実装する。SingleTopの開始シナリオでは、”Single~”と名の付くタイプは共通してonNewIntentが再開時にコールされることが特徴。

SingleTaskアクティビティの特徴として、再開時に上部にスタックされたアクティビティのonDestroyがコールされて削除されることに注意する。その後、onNewIntent、onRestart、onStartがコールされる。

続いてIntent.setFlags()メソッドでフラグ設定するシナリオ。FLAG_ACTIVITY_CLEAR_TOPでトップと同一アクティビティを開始すると、新しくアクティビティを生成した後、古いアクティビティが削除され、再生成されるイメージ。FLAG_ACTIVITY_NEW_TASKはStandardアクティビティの振る舞いと同じだが、タスクが新規作成される。

ルートアクティビティのclearTaskOnLaunchがtrueの場合、バックグラウンドから再開したときにルートアクティビティを除いて全てonDestroyがコールされて削除される。

finishOnTaskLaunchがtrueであるアクティビティはルートアクティビティを除いて、再開時に上から順にonDestroyがコールされるのがわかる。上部のアクティビティが削除されて顔を出したアクティビティはonRestartがコールされる。
0 Comments