startActivityとfinishの順番

Kenji Abe
Apr 6, 2022

--

よくあるケースとして、別のActivityを起動して今開いてるActivityを閉じるというケースがあると思います。実はこのときに startActivityfinish を呼び出す順番で挙動が異なります。

先に startActivity を呼び出して次に finish を呼び出す場合は基本的に意図しない挙動にはなりません。

startActivity(intent)
finish()

逆に先に finish を 呼び出して startActivity を呼び出す場合は、実は意図しない挙動になっています。

finish()
startActivity(intent)

このとき、ActivityのIntentには FLAG_ACTIVITY_NEW_TASK が自動で追加されています。

呼び出し先のActivityに以下のようなコードを書いておくと確認できます。

この挙動が意図しない結果になる可能性があるため注意が必要です。

基本的に startActivity を呼び出してから finish を呼び出すようにしたほうが安全だと思います。

参考

--

--

Kenji Abe
Kenji Abe

Written by Kenji Abe

Programmer / Gamer / Google Developers Expert for Android, Kotlin / @STAR_ZERO

No responses yet