我需要某种方法来传递只能从ViewModel执行一次的事件。目前,我正在为此使用LiveData。
用例:
我正在建立一些意图,然后将其分解成碎片。问题很明显,旋转后,我得到了旧数据,startAtivity再次运行。
我不想对支票等使用一些技巧。我敢肯定应该有正确的方法来做这些事情。
我找到的唯一方法是在这里:link-SingleLiveEvent。
那么,这样做是正确的方法吗?
从ViewModel传递与UI相关的事件的正确方法是什么?
最佳答案
对这个问题的答案是肯定的,如果这样做可以在不泄漏任何对象的情况下完成工作,而您可能找不到合适的解决方案!。
以上发现的解决方案在您的用例中是可以的,但是如果您找到的解决方案根本不涉及LiveData
,那么我也许可以将其指向一个方向。在下面查看解决方案:
ViewModel
具有要在UI上传递结果的异步方法。 ViewModel
和Activity/Fragment
之间的交互,在ViewModel
的异步方法上,将 LifeCycleOwner object
和 interface object
传递为方法参数。 LifecycleOwner
的生命周期事件的方法(即此处的 Activity 或片段实例),并在UI上按接口(interface)提供回调。 这有点设置,但是当您想要不带
LiveData
的解决方案时可以使用。关于android - 如何从ViewModel正确传递事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53481336/