依赖注入:匕首移除子图

Dependency Injection: Dagger removing sub-graph

当您想将子对象图添加到您使用的全局对象图时:

newObjectGraph = objectgraph.plus(new SubModule("SomeConfig"));

现在你已经完成了 SubModule,你想放手(或者你可能想用 SubModule("AnotherConfig") 替换它)。你会怎么做?事实上,我需要做任何事情吗? 或者我可以简单地做:

anotherNewObjectGraph = objectgraph.plus(new SubModule("AnotherConfig"));

PS:此问题基于 Jake Wharton 在 Android 上关于 Dagger.1 的介绍。

不完全确定我是否理解正确,但我会尝试在这里阐明一些问题。 Dagger 的 plus 方法创建一个新图并保持旧图不变。来自文档:

Returns a new object graph that includes all of the objects in this graph...

这意味着只要您保留 "root" 对象图的实例(在您的示例中为 objectGraph),您将始终能够创建范围图(或 sub-graphs 如果你喜欢命名的话)。

因此在您的示例中,newObjectGraphanotherNewObjectGraph 是完全不同的图表,它们仅共享 objectGraph.

中的内容

这是 ObjectGraph 的 link 到 github file

只要您不保留对范围图的引用,GC 就会为您清理它们。