小编Iva*_*lin的帖子

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

我有一个活动和几个片段。

活动:

@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);
}
Run Code Online (Sandbox Code Playgroud)

DI注入:

@Provides
ViewModelProvider.Factory mainViewModelProvider(MainViewModel mainViewModel) {
    return new ViewModelProviderFactory<>(mainViewModel);
}
Run Code Online (Sandbox Code Playgroud)

片段代码:

@Override
public BalanceViewModel setViewModel() {
    return ViewModelProviders.of(this, viewModelFactory).get(BalanceViewModel.class);
}
Run Code Online (Sandbox Code Playgroud)

当我改变方向时记录:

D/BalanceViewModel: Recreation / constructor
D/MainViewModel: Recreation / constructor
D/BalanceViewModel: Recreation / constructor
D/BalanceViewModel: Recreation / onCleared …
Run Code Online (Sandbox Code Playgroud)

java android mvvm viewmodel android-lifecycle

5
推荐指数
0
解决办法
414
查看次数

标签 统计

android ×1

android-lifecycle ×1

java ×1

mvvm ×1

viewmodel ×1