首页 > 解决方案 > 如何更有效地更新 UI

问题描述

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

标签: androidkotlinandroid-lifecycle

解决方案


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

一旦你把它连接起来,用户界面就会随着LiveData变化而自我更新。如果这些LiveDatas 已经有数据,您将在调用时立即获得它observe- 因此更新功能将运行并使用当前数据初始化您的 UI。

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

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


推荐阅读