Vas*_*Vas 4 android dependency-injection dagger-2
我当前正在尝试找出Dagger2。我正在尝试设置4个范围:App,User,Activity,Fragment。用户和活动组件是App的子组件。Fragment是一个以Activity为依存关系的组件。
假设我的UserSettingsActivity需要一个工具栏(由ActivityModule提供)和一个UserProfile(由UserModule提供)。在从数据库中请求之前,我不会获得UserProfile,而可以立即提供工具栏。因此,注入的顺序是先进入ActivityComponent,然后再进入UserComponent。我在活动中有2个@Inject字段,一个用于工具栏,一个用于UserProfile。我希望匕首会知道依赖关系来自不同的模块,但是似乎抱怨当注入ActivityComponent时无法提供UserProfile。显然,ActivityModule无法提供它,但是为什么不建立UserModule提供的UserProfile的连接呢?
据我所知,Dagger-2不支持“部分注入”。
因此,当您调用时myComponent.inject(this),如果Dagger-2 myComponent无法提供的所有带@Inject注释的成员,则会引发错误this。
我看到两种方法可以解决此限制:
@Inject从中删除注释UserProfile,UserProfile通过公共方法公开,UserComponent并在UserComponent准备使用时手动注入。类似于以下内容:userProfile = userComponent.getUserProfile()UserComponent依赖数据获取。UserComponent可以同时注入Toolbar和注入一些UserProfileProvider,然后UserProfile从UserProfileProvider可用时获取。我个人认为第二种方法是更好的选择。应该使用DI库来满足构造时对象的依赖性。在Android中,我们不能建造Activity或Fragment自己,因此,我们在执行DI onCreate(),onAttach(),onCreateView()等,但并不意味着我们应该以帮助控制应用程序的流量使用DI库。
| 归档时间: |
|
| 查看次数: |
802 次 |
| 最近记录: |