【发布时间】:2018-04-26 04:52:30
【问题描述】:
以下是我从doc 了解到的事情
- Dagger Android 正在为每个带有
ContributesAndroidInjector注释的 Activity 创建子组件 - 您可以将自定义范围应用于
ContributesAndroidInjector被注释到的方法 - 如果两个同级子组件具有相同的作用域,它们仍然会有不同的作用域实例
- 如果 Activity 在子组件中,它可以有自己的子组件,其中可以包含 Fragment。这些 Fragments 将共享 Activity 具有的作用域实例。
现在我的问题是: 如何使用 Dagger Android 让一个 Activity 成为另一个 Activity 的子组件?
我想这样做是因为我想实现@UserScope/@SessionScope 之类的东西。
来自this 我知道我可以只使用 Dagger 而不是 Dagger Android。但是使用Dagger Android,你只能让Application(也就是AndroidInjector)来注入Activity。您不能将 Activity 用作父子组件的持有者或宿主来注入另一个 Activity。
我理解正确吗?
2018 年 5 月 14 日更新:
我最终摆脱了 Dagger Android。所以没有更多的ContributesAndroidInjector,只是纯粹的匕首。为了注入 Activity/Fragment,我使用推荐的方式 here。它会是这样的:
class MyActivity : AppCompatActivity() {
private val factory: ViewModelProvider.Factory = Injector.myCustomScope().factory()
}
我们正在努力确保工厂是 Activity/Fragment 唯一需要的东西。
到目前为止一切都很好。
【问题讨论】: