3

我想更新我的旧 android 项目,并希望使用 Google 推荐的 ViewModel 和 Livedata 方式。我使用 Viewpager2 和 Tablayout,其中包含 4 个片段。第一个片段有一个 ViewModel 并通过 Livedata 观察数据变化并更新它的 UI。

我的问题是:

  1. 当我滑动到 Viewpager 中的第二个片段时会发生什么?第一个片段不再可见,但它仍然存在。不可见时,fragment1 的生命周期会发生变化吗?如果没有,我怎么能停止更新它,因为它仍然会收到更新通知。

  2. 我可以对所有 4 个片段使用相同的 ViewModel,因为它们只是以另一种方式可视化 Livedata 中的数据更改。我该怎么做?

谢谢!

4

1 回答 1

3

好的,经过一番测试,我找到了答案。

  1. 第一个fragment的生命周期在滑动到第二个fragment时变为暂停,在向后滑动时变为resume。您可以使用这些事件并设置一个 bool var 来更新或不更新 ui。

  2. 您可以对所有片段使用相同的 ViewModel。当片段不可见时,您只需要注意不要更新。而我的情况,你可以使用应用程序的生命周期。

于 2020-01-09T12:31:35.370 回答