假设您有一个应用程序,用户在第一个屏幕上登录,从那一刻开始,您就可以访问User
对象。我想在@SessionScope
下提供这种依赖关系 - 这意味着,当用户注销时,通过注释为@SessionScope
的组件提供的所有依赖关系都将会死亡。
尽管通过@SessionScope
提供了依赖项,但我希望通过@ActivityScope
提供依赖项,例如ActivityPresenter
,当然,我必须提供{{1}的依赖项}和@SessionScope
一起加入@ActivityScope
个消费者类。
使用Dagger 2新Activity
功能做到最好的是什么?
到目前为止,我能够在AndroidInjector
下提供依赖关系,如下所示:
@ActivityScope
答案 0 :(得分:3)
@SessionScope
; SessionActivityBinding
的类:
SessionComponent
的子组件:
@Subcomponent.Builder
并添加一个接收User
对象作为参数的方法;
@BindsInstance
; fun build(): SessionComponent
以便允许提供此SessionComponent
- 这是在用户登出时释放此组件所必需的; SessionActivityBinding
类添加到模块数组中; SessionModule
类以提供应在@SessionScope
下提供的依赖项; AppModule
上添加SessionComponent
作为子组件; AppModule
; AppComponent
SessionComponent
的实例,该实例必须保持有效直到用户注销; SessionComponent
的旧实例,例如:sessionComponent = null
- 这将放弃@SessionScope
下提供的所有依赖项; 可以找到更多详细信息和示例here;