假设这样的视图模型:
public class FooViewModel extends AndroidViewModel {
@Inject public FooViewModel(Application app, SavedStateHandle handle, Bar bar) {
// ...
}
}
我想Bar
使用 Dagger 2 进行注入。我正在 Android 上开发。
SavedStateViewModelFactory
如果你想在ViewModel
的构造函数中接收这个对象,你应该使用。
但是,SavedStateViewModelFactory
文档指出工厂是final
这意味着我也不能Bar
在那里注入。
到目前为止,我一直在通过 setter 进行注入:
@Provides
FooViewModel provideFooViewModel(ViewModelStoreOwner owner, Bar bar) {
FooViewModel viewModel = new ViewModelProvider(owner).get(FooViewModel.class);
viewModel.setBar(bar);
return viewModel;
}
有一个更好的方法吗?
我想使用构造函数注入,将Bar
实例变量标记为final
并消除setter。