Ответ 1
Да. Хорошо использовать api таким образом.
Мне нужно заменить текущую активность на новую. То есть, я хочу начать новое действие и удалить текущую активность из стека задач.
На основе документации кажется, что лучший способ - начать работу с Activity.startActivity в соответствии с обычным, а затем вызвать Activity.finish немедленно закрыть текущую активность.
Является ли это допустимым использованием этих API или я должен делать что-то еще?
Да. Хорошо использовать api таким образом.
Правильный способ достижения этого - использовать следующее:
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.