ここで非常に奇妙なこと。
私は当初、スタートアップアクティビティ(アクティビティA)であるアクティビティを持っていました。タグがandroid:launchMode="singleTask"
関連付けられていました。問題はありません。要件が変更され、アクティビティBをスタートアップアクティビティにしています。インテントフィルターをコピーし、名前を「.ActivityB」に変更し、起動モードタグも移動しました。
うまくいくようです。アプリを起動すると、アクティビティBに移動します。ただし、アクティビティBからアクティビティAに移動し、[戻る]ボタンをクリックすると、アプリが終了して再開しません(起動モードタグがない場合は再開します)。 )。
もう一つの例。アクティビティAからアクティビティB、アクティビティA、アクティビティBに移動すると、すべて問題ありません。クリックして戻ると(予想どおり)アクティビティAに移動しますが、もう一度クリックするとアクティビティAの前のインスタンスに移動し(ええと)、もう一度クリックしてアプリを終了します。どちらの場合もアクティビティBをスキップします。
私は明らかに何かを見落としていますが、何がわからないのです。戻るボタンの機能を上書きすることはなく、起動アクティビティを切り替える前にすべてが完全に機能しました。
編集 以下は、変更前のマニフェストからの抜粋です
<activity android:name=".ActivityA" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="ActivityB"></activity>
これが変更後の抜粋です
<activity android:name=".ActivityB" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="ActivityA"></activity>