Dagger 2:如何正确地重用依赖关系 - 如何设计组件和范围?

时间:2016-04-27 13:26:23

标签: android dependency-injection dagger-2

在我的应用程序中,我有3个活动:LoginActivity,PreferencesActivity和LoggedActivity。

流程可以是:

  • 1) LoginActivity - > PreferencesActivity(用户可以从登录活动中打开首选项)
  • 2) LoginActivity - > LoggedActivity - > PreferenceActivity(用户可以打开首选项,但因为他已经记录了,所以隐藏了一些首选项)

我想要3个范围和3个组件:

  • AppComponent with @AppScope(app-wide singletons)
  • 带@UserScope的UserComponent(仅在用户登录时为活动状态)
  • 其他@ActivityScope(仅适用于每项活动的范围)

将在成功登录后创建UserComponent,并在用户注销时销毁。但我需要PrefActivity中的信息(流程2)

现在我不知道如何设计所有这些组件,因为在我的PreferenceActivity中我还需要知道用户是否已登录但我还想让用户在未登录LoginActivity时查看所有首选项

如何结合两种情况?

提前致谢。

1 个答案:

答案 0 :(得分:0)

PreferenceActivity取决于UserComponent。这也是有道理的,因为您试图在不同的(已注销的)用户上获得不同的行为。

UserModule返回一个界面,例如PreferencePresenter并且根据是否有经过身份验证的用户,您可以返回UserPreferencePresenterDefaultPreferencePresenter,这会显示/隐藏相应的偏好设置。