社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

Android(kotlin) 既に起動中の Activity に onCreate を通らずに戻りたい

例えば、FieldActivity という Activity が既に起動していて、今は別の Activity が Active になっているとします。
以下のように、intent のインスタンスに Intent.FLAG_ACTIVITY_REORDER_TO_FRONT をセットし、それを startActivityIfNeeded() で呼び出してあげると、onCreate を通らずに、FieldActivity の状態を保持したままで戻ることができます。

val intent = Intent(applicationContext, FieldActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
startActivityIfNeeded(intent, 0)

FLAG_ACTIVITY_REORDER_TO_FRONT
スタック内の同一Activityを最前面に移動させます。

startActivityIfNeeded(Intent intent, int requestCode)
新たなActivityが必要な場合のみActivityを生成します。
※ requestCodeに0以上の値をセットした場合、起動したActivityのfinish()後に onActivityResult(int intRequestCode,int intResultCode, Intent intent) が呼ばれる。onActivityResult では intRequestCode と intResultCode の内容に応じた処理を実装する。

同一の Activityを最前面に移動させた上で、同一の Activityを改めて起動する必要はないため、startActivityIfNeeded は新たな Activity を生成しない。