Лучший способ справиться с состоянием активности

Я делаю приложение, которое показывает другое действие, когда я правильно вошел в систему, однако на главном экране, когда я нажал назад, а затем вернулся в приложение, показанное действие входа в систему.

Мне удалось избежать переопределения 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();
Другие вопросы по тегам