В ряде вопросов (как этот) я изучал, как "менять экраны" в моем приложении. У меня есть "заголовок" сверху, с 4 кнопками. Каждая кнопка предназначена для замены "содержимого" (т.е. экрана изменения):
+--------------------+
| menu with buttons |
+--------------------+
| |
| |
| C O N T E N T |
| |
| |
+--------------------+
Когда я нажимаю кнопку "Меню", я запускаю следующий код:
@Override
public void onClick(View v)
{
Intent myIntent = new Intent(BaseActivity.this, ActivityMain.class);
BaseActivity.this.startActivity(myIntent);
}
Как вы можете видеть, выполняется startActivity. Теперь, если я не укажу "launchMode" для Activity, это означает, что launchMode = normal. Если параметр startMode == нормальный, это означает, что активность будет воссоздаваться каждый раз при навигации по верхним кнопкам заголовка, а это означает, что все данные, введенные в "элементы формы", исчезли (или, по крайней мере, скрыты).
Итак, я нашел startMode "singleTask" , который выглядел как приятный. Если я добавлю этот режим запуска в свою активность, он не будет воссоздан, когда я перемещаюсь с помощью кнопок, сохраняя при этом состояние. Большой! Хорошо, пока я не прочитаю this:
Как отмечалось выше, не более одного экземпляра операции "singleTask" или "singleInstance", поэтому ожидается, что экземпляр будет обрабатывать все новые намерения.
Я обнаружил, что предложение означает, что может быть только одна активность, у которой параметр launchMode установлен на "singleTask" - если у меня больше одного, то это не будет работать (хотя ошибка компилятора).
Это означает, что я могу "сохранять состояние" только для одного действия при переключении между экранами (вперед и назад)
Еще раз, действительно ли это работает?