Заменить текущую активность - PullRequest
55 голосов
/ 22 января 2010

Мне нужно заменить текущее действие новым. То есть я хочу начать новое действие и удалить текущее действие из стека задач.

Исходя из документации, кажется, что лучшим способом было бы запустить действие, используя Activity.startActivity как обычно, а затем немедленно вызвать Activity.finish , чтобы закрыть активность.

Является ли это допустимым использованием этих API или я должен делать что-то еще?

Ответы [ 5 ]

56 голосов
/ 22 января 2010

Да. Это нормально использовать API таким образом.

29 голосов
/ 09 ноября 2015

Правильный способ достижения этого заключается в следующем:

Intent intent = new Intent(this,MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);
startActivity(intent);
this.finish();

Код предполагает, что вы находитесь в действии, в противном случае, если вы используете фрагменты, используйте getActivity ()

Таким образом, действие начинается, вы правильно устанавливаете иерархию для кнопки «Назад» и также уничтожаете соответствующую операцию.

5 голосов
/ 18 августа 2011

попробуйте использовать FLAG_ACTIVITY_TASK_ON_HOME, FLAG_ACTIVITY_NEW_TASK в флагах намерений

4 голосов
/ 17 апреля 2016

Вы можете добавить android: launchMode = "singleInstance" в своей деятельности, а затем переопределить метод onNewIntent для обновления даты

Ссылка Активность игрока в демоверсии ExoPlayer

0 голосов
/ 27 января 2019

Вы можете использовать FLAG_ACTIVITY_CLEAR_TASK при запуске действия. Я также определил launchMode для моей активности в манифесте как singleTask, но это было потому, что я хотел такое поведение для новой активности. Я думаю, что вы можете получить то, что вы хотите в отношении очистки предыдущего действия, независимо от того, что вы используете для launchMode с новым действием, если вы передаете startActivity флаг FLAG_ACTIVITY_CLEAR_TASK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...