我有一个Activity, 包含一些视图和 2 个片段(例如TextInputFragment和VoiceInputFragment)。
我创建了下一个 ViewModel:
ActivityViewModel用void onInput(String value)方法interface InputViewModel用LiveData<String> getInput()方法TextInputViewModel并VoiceInputViewModel作为实施InputViewModel
现在我想从两个片段中观察 getInput 并对它们做出反应。我有下一个想法:
Activity.onCreate:
ActivityViewModel avm = ViewModelProviders.of(this).get(ActivityViewModel.class);
TextInputViewModel tivm = ViewModelProviders.of(this).get(TextInputViewModel.class);
tivm.getInput().observeForever(avm::onInput);
VoiceInputViewModel vivm = ViewModelProviders.of(this).get(VoiceInputViewModel.class);
vivm.getInput().observeForever(avm::onInput);
这个想法正确吗?当配置更改并且我的 ViewModel 尝试重新观察彼此时会发生什么?有什么解决办法吗?