如何更有效地更新 UI

how to update UI more efficiently

我正在重新使用 my_layout.xml 和两个不同的 ViewModel 和 LiveData 我应该在哪个函数中更新我的 UI onCreate()/onStart()/onResume()(为什么??),所以不会多余...

onCreate 中将 Observer 设置在 LiveData 上(或片段中的 onViewCreated 之类的东西)。当一个新值进来时,那些观察者函数应该更新 UI,所以你只需编写函数告诉它如何更新——在这个 TextView 中显示这个值,诸如此类)。

连接好后,UI 将随着 LiveData 的变化而自行更新。如果那些 LiveData 已经有数据,您将在调用 observe 时立即获得它 - 因此更新函数将 运行 并使用当前的 UI 初始化您的 UI数据。

您只需要引用您的膨胀视图(例如您要更新的 TextView),这样您就可以在更新函数中使用它们。这就是为什么它必须在您在 onCreate 中调用 setContentView 之后,或者在片段中的 onViewCreated 中,您可以在其中访问膨胀的 view.

LiveData(以及任何其他生命周期感知组件)将在您从 onStop 变为 onResume 等时自动更新,并且您的更新会发生