【发布时间】:2017-12-03 17:26:20
【问题描述】:
我是 Dagger2 依赖注入的新手。当屏幕旋转时,我很难保留相同的组件。
@Inject
MainActivityPresenterImpl presenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
component = DaggerMainActivityComponent.builder()
.mainActivityModule(new MainActivityModule(this))
.applicationComponent(TrainningDagger3.get(this).getComponent())
.build();
component.inject(this);
presenter.fetchData();
}
我尝试调试应用程序,我认为当加载新配置时,它会创建组件的新实例和演示者的新实例。屏幕旋转时如何保留相同的组件和演示者。非常感谢!
【问题讨论】:
-
您必须重新创建组件,因为您将 Activity 添加到它。如果您尝试保留/存储组件,
.mainActivityModule(new MainActivityModule(this))将添加 Activity 和 leak。我建议您阅读更多有关 Dagger 的教程,并熟悉人们采用的不同方法,但作为一个 tl;dr,在配置更改期间没有简单/简单的方法来保持 Activity 范围内的东西。 -
感谢大卫的回复。我目前正在尝试使用加载器保存演示者的状态,我不确定结果:)。我不确定如何在配置更改时保留相同的 MainActivityComponent 实例,因为我必须在 MainActivity 中而不是在 Application 类中初始化 MainActivityComponent,因为我需要模块中的 MainActivity 实例。你能否给我推荐一些博客或一些很好的解释,这将在我的 Dagger 体验中给我一些支持。谢谢
标签: android dagger-2 android-mvp dagger