2016-04-27 2 views
0

в моем приложении У меня есть 3 действия: LoginActivity, PreferencesActivity и LoggedActivity.Кинжал 2: Как правильно повторно использовать зависимость - как проектировать компоненты и области?

Поток может быть:

  • 1) LoginActivity -> PreferencesActivity (пользователь может открыть предпочтения от входа деятельности)
  • 2) LoginActivity -> LoggedActivity -> PreferenceActivity (пользователь может открыть предпочтения, но поскольку он уже зарегистрирован, некоторые префы скрыты)

Я хочу 3 области и 3 компонента:

  • AppComponent с @AppScope (приложение шириной одноэлементные)
  • UserComponent с @UserScope (живых только тогда, когда пользователь вошел в систему)
  • другой с @ActivityScope (простор для каждой активности только)

UserComponent будет создан после успешного входа в систему и будет уничтожен при выходе пользователя из системы. Но мне нужна эта информация в PrefActivity (поток 2)

Теперь я не знаю, как проектировать все эти компоненты, поскольку в моей PreferenceActivity мне также нужно знать, зарегистрирован ли пользователь или нет, но я также хочу, чтобы чтобы просмотреть все настройки, если вы не вошли в систему с LoginActivity.

Как совместить оба случая?

Заранее спасибо.

ответ

0

Сделать PreferenceActivity в зависимости от UserComponent. Это также имеет смысл, поскольку вы пытаетесь получить другое поведение у другого (выведенного из системы) пользователя.

Сделайте свой UserModule верните интерфейс, например. PreferencePresenter, и в зависимости от того, есть ли аутентифицированный пользователь, вы либо вернете UserPreferencePresenter, либо DefaultPreferencePresenter, что отобразит/спрячет соответствующие настройки.

+0

Но 'UserComponent' будет создан в' LoggedActivity', поэтому пользователь должен войти в систему. Я хочу, чтобы открыть 'PreferenceActivity' из' LoginActivity'. У меня есть идея, которая может быть похожа на вашу ... Именно в классе 'Application' я бы использовал ссылку' UserComponent', которая была бы 'null', если пользователь не войдет в систему. – Tomask

Смежные вопросы