Лучший способ справиться с состоянием активности
Я делаю приложение, которое показывает другое действие, когда я правильно вошел в систему, однако на главном экране, когда я нажал назад, а затем вернулся в приложение, показанное действие входа в систему.
Мне удалось избежать переопределения onBackPressed таким образом:
public void onBackPressed()
moveTaskToBack(true);
}
Это лучший способ сделать это? Есть ли более правильный способ сохранить состояние приложения при его выходе?
3 ответа
На ваш вопрос, который я понимаю, вы хотите очистить весь стек истории и начать новую деятельность. Для этого на уровне API 11 был добавлен новый флаг намерений: Intent.FLAG_ACTIVITY_CLEAR_TASK
Просто чтобы уточнить, используйте это:
intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
Для API <=10 теперь можно использовать класс IntentCompat для того же. Можно использовать флаг IntentCompat.FLAG_ACTIVITY_CLEAR_TASK, чтобы очистить задачу. Таким образом, вы также можете поддерживать предварительный уровень API 11.
В вашей активности входа в систему после начала намеренного вызова финиша ()
закончи уничтожать свою активность и избегай ее повторного запуска автоматически.
Ваша проблема в том, что вы сохранили LoginActivity в стеке. поэтому, когда вы нажмете назад, он убьет MainActivity(после входа в систему) и, поскольку LoginAcitivity все еще там. это будет показано снова. Лучше всего убить LoginAcitivty после начала новой активности.
позвоните в LoginActivity:
Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);
finish();