Знакомый сценарий: у меня есть действие Main , которое запускает действие Game при нажатии кнопки. Если пользователь нажимает кнопку HOME, а затем снова запускает мое приложение, оно должно быть представлено с действием Game , которое он делал последним при использовании приложения.
Однако вместо этого он снова получает действие Main . У меня такое ощущение, что Android создает еще один экземпляр MainActivity и добавляет его в стек для этого приложения, вместо того, чтобы просто выбирать что-то сверху, потому что если я нажимаю BACK после перезапуска приложения, я получаю к игровой активности! И метод Main.onCreate вызывается каждый раз вместо вызова GameActivity.onResume.
Мой AndroidManifest.xml
в значительной степени "голый":
<activity android:name="MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="GameActivity" android:label="@string/app_name">
</activity>
Как видите, ничего особенного.
И вот как запускается новое действие, тоже очень простое:
Intent intent = new Intent(this, GameActivity.class);
startActivity(intent);
Теоретически это должно работать в Android просто "из коробки", поскольку ответ на очень похожий вопрос гласит: Поддержание стандартного состояния активности стека в приложении в Android (с использованием режима запуска singleTask) , но это не так.
Я читал и перечитывал документацию по Activity, Task и Stacks и просматривал все связанные ответы в SO, но не могу понять, почему такая простая установка не совсем работает, как ожидалось.