Рассматривали ли вы использование фрагментов вместо действий?
Вы можете использовать navController для управления отображаемыми представлениями.
https://developer.android.com/topic/libraries/architecture/navigation/
Например, что-то подобное в вашей деятельности (не проверено):
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val navController = Navigation.findNavController(this@MainActivity, R.id.fragment_container)
// Check if user is logged in
if (UserRepository.isLoggedIn()) {
navController.navigate(< the other fragment id >)
} else {
navController.navigate(< the login fragment id >)
}
}
Если вы не хотите использовать это, вы также можете выполнить перенаправление в своем классе Application, используя startActivity(Intent(baseContext, XXActivity::class.java))
после того, как проверили свое состояние входа в систему. Это может занять некоторое время, поэтому вы также хотите добавить заставку -> которую я не рекомендую, потому что вы не можете дать обратную связь пользователю о том, что происходит, и так далее.
Для предотвращения перехода назад при отображении экрана входа в систему вы переопределяете кнопку возврата:
override fun onBackPressed() {
// Do nothing or manually navigate / close app
}
Я бы рекомендовал вам использовать подход Activity / Fragment / NavController.