我尝试使用 Kodein DI 库并习惯于像这样绑定我的 Repo、NetworkService 和 viewModel
bind<MovieNetworkService>() with singleton {
instance<Retrofit>().create(MovieNetworkService::class.java)
}
bind<MovieRepo>() with provider {
MovieRepo(instance())
}
bind<MovieViewModel>() with provider {
MovieViewModel(instance() , instance<Application>())
}
活动 :
class MainActivity : BaseActivity(), KodeinAware {
override val kodein: Kodein by Kodein.lazy {
import(androidCoreModule(application))
import(movieDIModule)
}
private val viewModel: MovieViewModel by kodein.instance()
我能够使用 viewmodel 并且一切正常,但我注意到在设备旋转时我的 viewmodel 状态没有被保存,或者我的 Activity 正在创建一个新的 ViewModel。我用 ViewModelProviders 方法尝试了这个,并且有效,但是使用 Kodein DI,我的视图模型在设备旋转时再次实例化。
我在这里做错了什么?