Как избежать создания фрагмента заставки при переходе на архитектуру Single Activity? - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь перевести мое приложение на архитектуру Single Activity с компонентом Navigation.

В версии Multi Activity, когда пользователь запускает приложение, он попадает в SplashScreen Activity, где приложение выполняет некоторые сетевые операции (устройство зарегистрировано, пользователь проверен, ...). Когда все это завершено, он переходит к содержанию Activity.

В версии Single Activity мне нужно создать фрагмент SplashScreen, чтобы сделать то же самое, но я не хочу его создавать. Эта операция выполняется слишком быстро (~ 1 с), мне не нужен фрагмент к ней, теперь я хочу сделать свой фрагмент содержимого (созданный из содержимого Activity) похожим на начальный фрагмент назначения, и просто показать загрузчик на нем, пока все «начальные» происходит работа сети.

Кажется, что нет проблемной ситуации, но проблема в том, что мне нужно взять мой код из SplashScreen и поместить его в контент Фрагмент, но это не очень хорошее место для него. Фрагмент контента слишком велик, и иногда он воссоздается, поэтому мне нужно создать флаги, чтобы показать, что я не хочу снова выполнять свои «начальные» операции.

Так как это сделать наилучшим образом? Или мне нужно создать SplashScreenFragment?

Моя идея - разместить этот код на MainActivity, но я не совсем понимаю, как заставить его работать. Мне нужно показать загрузчик по фрагменту контента и как-то создать ситуацию, когда «все начнёт работать» только после того, как исходный код на MainActivity закончится.

1 Ответ

0 голосов
/ 31 марта 2019

Самый простой способ - создать вспомогательный класс с обратным вызовом. выглядит как

class fragmentContent{
  void onCreateView(){
    View view = ...; //show loader
    helper.doLongOperationInBackground(new Callback());
    return view;
  }

  class Callback{
    void onLongOperationComplete(){
      showViewContent();
    }
  }

}

не забудьте продлить операцию только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...