Java Android ViewModel在配置更改时重新创建

Java Android ViewModel在配置更改时重新创建,java,android,mvvm,viewmodel,android-lifecycle,Java,Android,Mvvm,Viewmodel,Android Lifecycle,我有一个活动和一些片段 活动: @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); performInjection(); performDataBinding(); } private void performDataBinding() { viewDataBinding = DataBindin

我有一个活动和一些片段

活动:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    performInjection();
    performDataBinding();
}

private void performDataBinding() {
    viewDataBinding = DataBindingUtil.setContentView(this, setLayoutId());
    this.viewModel = viewModel == null ? onCreateViewModel() : viewModel;
    viewDataBinding.setVariable(setBindingVariable(), viewModel);
    viewDataBinding.executePendingBindings();
}
@Override
public MainViewModel onCreateViewModel() {
    return ViewModelProviders.of(this, viewModelFactory).get(MainViewModel.class);
}
去离子注入:

@Provides
ViewModelProvider.Factory mainViewModelProvider(MainViewModel mainViewModel) {
    return new ViewModelProviderFactory<>(mainViewModel);
}
并在我更改方向时记录:

D/BalanceViewModel: Recreation / constructor
D/MainViewModel: Recreation / constructor
D/BalanceViewModel: Recreation / constructor
D/BalanceViewModel: Recreation / onCleared

所以,我的问题是为什么每次我改变方向时viewModels都会调用构造函数?它是否与DI连接

找到解决办法了吗?
D/BalanceViewModel: Recreation / constructor
D/MainViewModel: Recreation / constructor
D/BalanceViewModel: Recreation / constructor
D/BalanceViewModel: Recreation / onCleared