2016-11-14 3 views
2

Я пытаюсь реализовать следующий рабочий процесс для андроид приложения:Android - Workflow для Splash, Интро, Вход, Main

  1. Если приложение запускается, я хочу, чтобы показать экранную заставку (используя этот реализация: Splash screens the right way) только для стартапа приложения
  2. Если приложение открывается в первый раз, когда я хочу, чтобы показать интро (я подумать об использовании этой библиотеки: AppIntro)
  3. Если пользователь не вошел в систему, я хочу, чтобы показать знак активности
  4. В противном случае я хочу, чтобы показать основное направление деятельности

В теории я думаю, что я знаю, как это сделать. Таким образом, экран заставки не является проблемой, показывая ввод один раз, также не проблема с использованием общих настроек, а также проверка состояния входа не проблема с использованием Firebase Auth. Так что получить различные условия не проблема.


НО, где я на самом деле есть проблемы, как соединить отдельные действия.


Должен ли я использовать SplashScreen деятельность как своего рода начальной загрузки и запуска согласно деятельности там?

Псевдо Код для SplashActivity:

public class SplashActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     showCorrectActivity(); 
    } 

    private void showCorrectActivity() { 
     if(introExecuted) { 
      if(userSignedIn) { 
       startActivity(main); 
      } else { 
       startActivity(signIn); 
       showCorrectActivity(); 
      } 
     } else { 
      startActivity(intro); 
      showCorrectActivity(); 
     } 
    } 
} 

Или я должен реализовать какой-то поток, где основным видом деятельности является "хозяином" ?:

Начало SplashActivity, перенаправление на главную, проверьте в сети onCreate(), если введено вступление, начните, соответственно, при необходимости приступите к входу в систему с основного.


Или совсем другой подход? Любые лучшие практики?


Мне тяжело здесь, поэтому спасибо вам за любые предложения!

+0

только для хэдз-ап, попробуйте декомпилировать google login apk com.google.android.gsf.login.apk. он получил большую часть того, что вам нужно. –

ответ

0

На мой взгляд, ваш подход правильный. Вы используете время splashScreen, чтобы решить, к какой деятельности вам следует идти, поэтому пользователь не ждет.

Единственный случай, когда я не сделал бы этого так, как если бы в вашем всплеске вы должны асинхронно вызвать веб-службу. Это сделает запуск медленным для пользователя.