実行環境
- サポートライブラリ 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
を使うようです。