所以我本周末花了很多时间在Mortar and Flow,我想我终于完成了大部分工作。我发现它比我原先想象的要复杂一点,主要是因为我还没有完全理解Dagger的ObjectGraph Scoping,这是Mortar非常依赖的。我在Dagger的网站上已经阅读了尽可能多的内容,但是我发现这个主题的信息在与Dagger特别相关时缺乏。
所以我有几个问题: 我看到了@ Singleton's的范例:
@Layout(R.layout.screen_friend)
public class FriendScreen implements Blueprint {
@Override public String getMortarScopeName() {
return getClass().getName();
}
@Override public Object getDaggerModule() {
return new Module();
}
@dagger.Module(
injects = FriendView.class
)
static class Module {
}
@Singleton
public static class Presenter extends ViewPresenter<TestView> {
@Inject
public Presenter() {
Log.d("FriendScreen", "Friend Presenter Created");
}
@Override protected void onLoad(Bundle savedInstanceState) {
super.onLoad(savedInstanceState);
}
}
在这种情况下,Presenter是否专门针对此模块,因为它是一个内部类? 2.如何确保仅在此对象图中创建它的实例而不是全局应用程序对象图? 2.如果演示者太大了,我想把它移到它自己的独立课程怎么办?我如何将其范围仅限于此模块? 3.我注意到他们示例中的某些Module类是静态的,而其他类则不是。这对范围界定有什么影响吗? 4.我在哪里可以阅读更多内容以更好地理解Dagger的对象图。我需要更好地理解includes,inject,addsTo以及如何在ObjectGraph创建中使用它们 等:
@dagger.Module( //
includes = ActionBarModule.class,
injects = MainView.class,
addsTo = ApplicationModule.class, //
library = true //
)
答案 0 :(得分:0)
我不相信演示者的范围是一个模块,因为它们会被保留。 @Singleton注释也让我相信一个演示者在一个全局图上,当一个活动重新创建自己时,它就会绑定到一个视图。
这是一个很好的范围source。
如果您想了解更多关于静态内部与非静态内部与非静态类的内容,那么有效Java会有很好的解释。