当我旋转我的MainViewModel的手机构造函数时,我一直在调用它!
MainActivity:
@Override
public MainViewModel onCreateViewModel() {
return ViewModelProviders.of(this, viewModelFactory).get(MainViewModel.class);
}
BaseActivity:
@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();
}
MainViewModel构造函数:
@Inject
MainViewModel(ErrorHandler errorHandler, Router router, TradeInfoInteractor getTradeInfoUseCase) {
super(errorHandler);
Log.d(TAG, "constructor");
this.router = router;
this.getTradeInfoUseCase = getTradeInfoUseCase;
init();
}
登录娱乐:
05-30 20:48:45.046 21513-21513 / merseyside.com.cripto D / MainViewModel: 构造
05-30 20:48:49.566 21513-21513 / merseyside.com.cripto D / MainViewModel:构造函数
那有什么不对?在文件中说
“//在系统第一次调用活动时创建ViewModel onCreate()方法。
//重新创建的活动接收第一个活动创建的相同MyViewModel实例。“