我有一个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 尝试重新观察彼此时会发生什么?有什么解决办法吗?