Androidで起動するFLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_CLEAR_TOPは開始モードフラグであり、Activityを開始する場合に、そのActivityの上にあるActivityインスタンスをすべて消去するために使用されます。FLAG_ACTIVITY_CLEAR_TOPフラグをセットした場合、開始対象のActivityがタスクスタックにすでに存在する場合は、そのActivityの上にあるActivityインスタンスはすべて破棄された後、そのActivityインスタンスがスタックの一番上に置かれ、ユーザーがそのActivityに戻った時に新しいインスタンスが作成されないようにします。
FLAG_ACTIVITY_CLEAR_TOPフラグを使用するケース
- 通知からアクティビティを開いた時に、戻るボタンで通知から来たアクティビティではなく、ホーム画面に戻したい
- ユーザーはサイドバーやメニューから機能アイテムを選択して、Activityを開き、戻るボタンを押したときは、メニューやサイドバーActivityではなくメイン画面に戻りたい。
- ユーザーがメイン画面から機能をタップして新しいアクティビティに遷移し、戻るボタンを押したときに、前の機能画面ではなくメイン画面に戻るようにしたい。
FLAG_ACTIVITY_CLEAR_TOPフラグを使用したサンプルコードを次に示します:
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
FLAG_ACTIVITY_CLEAR_TOPフラグは新しいActivityを起動したときにのみ有効で、finish()メソッドを直接呼び出して現在のActivityを破棄した場合にはFLAG_ACTIVITY_CLEAR_TOPフラグの効果は発生しないことに注意してください。