Ale*_*ndr 2 android dagger-2 mosby
样本方案:
它基于Mosby的例子.我想分享Project之间的对象ProjectFragment和ProjectHistoryFragment使用@PerProject范围.
ProjectModule:
@Module
public class ProjectModule {
private Project project;
public ProjectModule(Project project) {
this.project = project;
}
@Provides
@PerProject
public Project provideProject() {
return project;
}
}
Run Code Online (Sandbox Code Playgroud)
ProjectModule并将ProjectComponent由ProjectFragment每个人创建并分享Project-dependent fragment.尼斯.
但有一个问题.如果我需要更新标题Project怎么办?在我的情况下,Project是一个没有任何setter的最终对象.Project只能在ProjectFragment中修改,因此我可以更新和重置module's值以备将来注入.但我认为这是不好的做法.有人能给出更好的建议吗?
不要更改模块中的值.
组件(及其包含的模块)具有一组在您需要的地方注入的对象.它们被缓存,重用等等.切换对象会使您处于不一致状态.
如果需要更改对象,则使用新模块创建新组件.
如果你仍然需要更改项目对象而不重新创建所有内容,那么不要注入Project自己而是注入一些ProjectManager,这也可以实现一些Observable模式来通知你是否Project更改了.这样,您可以修改项目并对更改做出反应.
| 归档时间: |
|
| 查看次数: |
1358 次 |
| 最近记录: |