假设这样的视图模型:
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。