Заменить текущую деятельность

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

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

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

Ответ 1

Да. Хорошо использовать api таким образом.

Ответ 2

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

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()

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

Ответ 3

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

Ответ 4

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

Ссылка PlayerActivity в демонстрации ExoPlayer

Ответ 5

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