FLAG_ACTIVITY_CLEAR_TOPについて

1 min read読了の目安(約700字

FLAG_ACTIVITY_CLEAR_TOPとは

FLAG_ACTIVITY_CLEAR_TOPは「インテントフラグ」の1つです。

インテントフラグとは、Intentに設定するフラグのことで、Activityタスクのデフォルトの関連付けを変更することが出来ます。

ちなみにタスクとはざっくり言うと「起動しているアプリ」のことで、そのタスクの中にバックスタックでActivityを入れていきます。

task

FLAG_ACTIVITY_CLEAR_TOPは、開始するActivityが現在のタスクで実行されているとき、そのActivityの新しいインスタンスを起動します。

そして、そのActivityの上に積まれていた他のActivityは、全て削除されるというものです。

上記の図で言うと、Activity1をFLAG_ACTIVITY_CLEAR_TOPで起動すると、「Activity2とActivity3」が削除されて、Activity1が表示されるということになります。

インテントフラグは、以下のように設定します。

val intent = Intent(this, Activity1::class.java).apply {
  flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
}
startActivity(intent)

FLAG_ACTIVITY_CLEAR_TOPを設定したActivityの再描画を行いたいときに使えるかと思います。