实例化SharedViewModel

问题描述

我遵循Flow教程中的编码。在其中一个(使用共享ViewModel的2个片段之间进行通信,有一个废弃的方法ViewModelProviders.of(...:

public void onActivityCreated(@Nullable Bundle savedInstanceState) {
     super.onActivityCreated(savedInstanceState);
     viewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
     viewModel.getText().observe(getViewLifecycleOwner(),new Observer<CharSequence>() {
         @Override
         public void onChanged(@Nullable CharSequence charSequence) {
             editText.setText(charSequence);
         }
     });
 } 

作者解释说,应用程序知道何时销毁并重新创建ViewModel,因此我们不应该这样做。我找到了一种方法,该方法可以代替已废弃的ViewModelProviders:

//myNewMethod
viewModel= ViewModelProvider.AndroidViewModelFactory.getInstance(getActivity().getApplication()).create(SharedViewModel.class);  

现在的问题是,此方法始终创建Shared ViewModel的新实例。因此,当我有两个片段时,该方法将被调用两次并生成两个不同的共享ViewModel!

如何摆脱这种情况,我应该在哪里实例化Shared ViewModel?主要活动还是仍然支离破碎?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)