ViewModelProvider是一個幫助在Activity和Fragment中實例化ViewModel的類,其功能是為了實現ViewModel和UI控制器的分離。雖然ViewModelProvider本身沒有提供自定義的功能,但是您可以通過自定義ViewModelFactory來實現自定義邏輯。
您可以通過繼承ViewModelProvider.Factory接口并實現create方法來創建自定義的ViewModelFactory。在create方法中,您可以根據需要自定義ViewModel的實例化邏輯,并返回一個新的ViewModel實例。
以下是一個簡單的示例,演示如何自定義ViewModelFactory:
public class CustomViewModelFactory implements ViewModelProvider.Factory {
private SomeDependency dependency;
public CustomViewModelFactory(SomeDependency dependency) {
this.dependency = dependency;
}
@Override
public <T extends ViewModel> T create(Class<T> modelClass) {
if (modelClass.isAssignableFrom(MyViewModel.class)) {
return (T) new MyViewModel(dependency);
}
throw new IllegalArgumentException("Unknown ViewModel class");
}
}
然后,您可以在Activity或Fragment中使用自定義的ViewModelFactory來創建ViewModelProvider實例,如下所示:
CustomViewModelFactory factory = new CustomViewModelFactory(new SomeDependency());
MyViewModel viewModel = new ViewModelProvider(this, factory).get(MyViewModel.class);
通過使用自定義ViewModelFactory,您可以實現更靈活和可定制化的ViewModel實例化邏輯,以滿足您的需求。