最初在具有MVVM体系结构(单个活动/多个片段)的项目中观察到此问题,该操作是对数据库执行插入/删除操作,然后导航回原始片段。然后,主片段重新订阅到主ViewModel中的LiveData,并且LiveData发出两次:
我创建了一个very simple example project来演示该问题(示例中没有MVVM或多个片段)。 Here is an animated GIF of the example app
在示例应用程序中,您可以按照以下步骤观察到过时事件:
然后可以看到触发了两个事件。第一个是陈旧的。
也许有人知道如何确保在重新订阅LiveData之后仅触发一个正确的事件吗?
注意:有关如何在单个活动/多个片段体系结构中处理LiveData的背景,请参见"3. Resetting an existing observer"。我使用这种方法导致了这个问题。