実行環境
- サポートライブラリ v25
解説
よく見つかるサンプルがこちらです。コードはKotlinです。
val intent = LauncherActivity.createIntent(this)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
正しいのはこちらです。
val intent = LauncherActivity.createIntent(this)
intent.addFlags(IntentCompat.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
Intent.FLAG_ACTIVITY_CLEAR_TOPの挙動が複雑なのですが、こちらに記載されている内容が正しそうです。
その後見つけたのがこちらの回答。
回答ではIntentCompat.FLAG_ACTIVITY_CLEAR_TASKとIntent.FLAG_ACTIVITY_CLEAR_TOPを設定していますが、
それぞれの仕様を読みIntentCompat.FLAG_ACTIVITY_CLEAR_TASKだけで十分だと判断しました。
また、呼び出し元のfinish()も不要です。
IntentCompat.FLAG_ACTIVITY_CLEAR_TASKについては解説記事が見つからなかったのでGoogle公式を貼っておきます。
https://developer.android.com/reference/android/support/v4/content/IntentCompat.html
サポートライブラリv26以降について
サポートライブラリv26ではIntentCompat.FLAG_ACTIVITY_CLEAR_TASKがDeprecatedになり、Intent.FLAG_ACTIVITY_CLEAR_TASKを使うようです。