Вот что я лично сделал для одного из моих небольших мобильных проектов. Вместо того, чтобы создавать отдельный безэкранный Activity
, где есть условие и который запускает соответствующий экран, я поместил условие в один Activity
и выполнил динамический setContentView()
, например:
if (!userIsLoggedIn) {
setContentView(R.layout.signup);
} else {
setContentView(R.layout.homescreen);
}
Два важных примечания к этому подходу:
1: Вместо того, чтобы писать в onCreate()
, вы хотите поместить принятие решения в onResume()
именно потому, что последнее всегда вызывается всякий раз, когда экран должен отображаться впереди. Вы можете видеть это из жизненного цикла активности Android . Так, если, например, пользователь просто скачал мое приложение и запустил его в первый раз, потому что ни один пользователь не вошел в систему, он будет перенаправлен на страницу регистрации. Когда она закончила регистрацию и по какой-то причине нажимает кнопку HOME
(не BACK
, которая вообще выходит из приложения!), А затем возобновляет приложение, макет, который она увидит, уже является домашним экраном. Если я поместу условное выражение в onCreate()
, то отобразится экран регистрации, поскольку в соответствии с жизненным циклом он не возвращается к onCreate()
при возврате приложения на фронт.
2: Это решение идеально, только если объединение функций этих двух видов деятельности не приведет к созданию длинного дьявольского блока кода. Как я уже сказал, мой проект был небольшим (его основная функция встречается в фоновом режиме), поэтому в одной динамической Activity
не было слишком много. Безэкранный Activity
- определенно правильный путь, если вам нужно, чтобы ваш код был более читабельным.