Вызов finish() после запуска нового действия

Первое действие, которое загружается в моем приложении, — это действие инициализации, и после его завершения загружается новое действие. Я хочу убедиться, что если пользователь нажмет «Назад», он перейдет прямо к панели запуска, а не к экрану инициализации. Примечание: это вообще лучший подход или лучше сделать это с помощью какого-нибудь флага намерения?

Правильно ли вызывать finish() после вызова startActivity() для нового действия?

onCreate() {
...
startActivity(new Intent(this, NextActivity.class));
finish();
...
}

Я все еще использую весь метод «Очередь сообщений» для работы в Android, и я предполагаю, что вызов startActivity(), а затем finish() из моего первого onCreate() действия будет регистрировать каждое соответствующее сообщение в очереди сообщений, но завершит выполнение onCreate(), прежде чем перейти к запуску следующего действия и завершению моего первого. Это правильное понимание?


person stormin986    schedule 26.04.2010    source источник


Ответы (1)


Вероятно, вам следует просто использовать флаг noHistory для активности. в вашем manifest.xml

person jqpubliq    schedule 26.04.2010
comment
Спасибо! который выполняет именно то, что я хотел сделать. Однако мне все еще интересно услышать, есть ли что-то изначально неправильное или плохое в моем ранее описанном подходе, и правильно ли я понимаю, как сообщения обрабатываются в очереди. - person stormin986; 26.04.2010
comment
Ваш код (начать, а затем закончить) абсолютно правильный, и этот метод часто используется. - person hackbod; 26.04.2010
comment
@hackbod: Не могли бы вы указать на документацию? На всякий случай, если это кому-то нужно (например, мне) ... - person ; 25.02.2012
comment
Что, если действие A имеет nohistory=true и сначала отправляется в фоновый режим (т. е. пользователь нажал кнопку «Домой»), а затем возвращается на передний план — сохранится ли состояние действия A, несмотря на noHistory=true? - person AgentKnopf; 04.04.2012
comment
Будьте осторожны с noHistory. Новые задачи не будут автоматически завершать действие, вызывается onPause(), но не onStop и onDestroy. - person Cookster; 08.04.2014
comment
Мой личный опыт показывает, что noHistory редко бывает правильным решением. Одно (обычно) неожиданное поведение заключается в том, что если ваши пользователи получают входящий вызов во время действия noHistory, он исчезает. - person Nick; 03.07.2014