Заменить текущую активность
Мне нужно заменить текущую деятельность на новую. То есть я хочу начать новое действие и удалить текущее действие из стека задач.
Исходя из документации, кажется, что наилучшим способом было бы запустить действие с использованием Activity.startActivity, как обычно, а затем немедленно вызвать Activity.finish, чтобы закрыть текущее действие.
Это допустимое использование этих API или я должен делать что-то еще?
5 ответов
Надлежащим способом достижения этого является использование следующего:
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()
Таким образом, действие начинается, вы правильно устанавливаете иерархию для кнопки "Назад" и также уничтожаете соответствующее действие.
Попробуйте использовать FLAG_ACTIVITY_TASK_ON_HOME
, FLAG_ACTIVITY_NEW_TASK
в намерениях флаги
Вы можете добавить android:launchMode="singleInstance" в свою деятельность, а затем переопределить метод onNewIntent, чтобы обновить дату
Вы можете использовать FLAG_ACTIVITY_CLEAR_TASK при запуске действия. Я также определил launchMode для моей активности в манифесте как singleTask, но это было потому, что я хотел такое поведение для новой активности. Я думаю, что вы можете получить то, что вы хотите в отношении очистки предыдущего действия, независимо от того, что вы используете для launchMode с новым действием, если вы передаете startActivity флаг FLAG_ACTIVITY_CLEAR_TASK.