この問題は、アクティビティが次のコードで記述されたメニューから開始された場合にのみ発生することが判明しました。
private static final int MENU_ITEM_A = 0;
private static final int MENU_ITEM_B = 1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_ITEM_A, 0, R.string.menu_item_a);
menu.add(0, MENU_ITEM_B, 0, R.string.menu_item_b);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
intent = null;
switch (item.getItemId()) {
case MENU_ITEM_A:
intent = new Intent(this, ActivityA.class);
break;
case MENU_ITEM_B:
intent = new Intent(this, ActivityB.class);
break;
default:
intent = null;
Log.e(TAG, "Unkown menu item.");
}
if (intent != null) {
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityForResult(intent,
ActivityHelper.AUTO_CLOSE_REQUEST_CODE);
}
return super.onOptionsItemSelected(item);
}
これが文字列リソースです
<string name="menu_item_a">Start Activity A</string>
<string name="menu_item_b">Start Activity B</string>
このコードをinazarukのコードサンプルのベースアクティビティに追加するだけで、自分の目で確かめることができます。メニューでアクティビティAとアクティビティBを数回切り替えてから、スタック内のすべてのアクティビティを閉じてみてください。うまくいかないだろう。
これで、原因はインテントフラグであると考えられます。
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
ただし、このフラグをinazarukのコード内のすべてのインテントに追加すると、これは除外されます。
誰かが何が起こっているのかを正確に説明できれば、それを聞くのは素晴らしいことです。