Когда в стеке нет активностей, например, если вы нажмете назад, пока не вернетесь домой, и не нажмете значок запуска, он всегда будет запускать действие с помощью фильтра намерений модуля запуска, независимо от того, какое действие было открыто последнимили если процесс приложения еще жив или нет.Как предлагает @TheHebrewHammer, чтобы обойти это, ваша LandingActivity может выступать в качестве дерева решений навигации на основе сохраненных данных и действий по запуску.Вы можете проверить, как Google обрабатывает нечто подобное в приложении Google I / O Schedule здесь
В качестве альтернативы, если ваша LandingActivity не показывает большой пользовательский интерфейс и просто запрашивает в качестве сегвея для других действий,Вы могли бы избегать нескольких действий большую часть времени, объявив MainActivity как средство запуска и проверив сеанс, вошедший в систему, как показано ниже:
override fun onCreate(savedInstanceState: Bundle?) {
if (!isUserLoggedIn()) {
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
finish()
return
}
// continue as normal
}
Если в большинстве случаев сеанс вошел в систему, вы только начнетеодно действие большую часть времени, и вам не нужно будет передавать информацию через намеренные данные из LauncherActivity в некоторых ситуациях.