次のフローのアプリがあります (同じアプリ内のすべてのアクティビティ):
- アクティビティ A は でアクティビティ B を開始し
startActivityます。ブール値の "autoContinue"=true エクストラを追加する場合があります。 - アクティビティ B が開始されると、 で「autoContinue」フラグがチェックさ
onCreateれgetIntent().hasExtra("autoContinue")ます。フラグが true の場合、すぐに でアクティビティ C を開始しstartActivityます。
これで、アクティビティ C で戻るボタンを押すための 2 つのシナリオができました。
- アクティビティ B がまだアクティビティ スタックにあり、破棄されていない場合は、すべて問題ありません。アクティビティ C が閉じ、アクティビティ B が表示されます。
- ホームボタンを押してアクティビティ C を終了し、アクティビティ C に戻る前に他のことをすると、アクティビティ B が破棄されることがよくあります。アクティビティ C で戻るボタンを押すと、"autoContinue"=true のインテントでアクティビティ B が作成され、すぐにアクティビティ C が再び開始されます。
アクティビティ B のインテントからフラグを削除しようとしましたonCreateが、うまくいきません:
final Intent intent = getIntent();
final Bundle extras = intent.getExtras();
if (extras.containsKey("autoContinue")) {
intent.removeExtra("autoContinue");
continue();
}
アクティビティ C から戻るときに、インテント エクストラから "autoContinue"=true フラグを削除するにはどうすればよいですか?