android - 如何更有效地更新 UI
问题描述
我正在重新使用my_layout.xml
具有两个不同 ViewModel 和 LiveData 的 a 我应该在哪个函数中更新我的 UI onCreate()
/ onStart()
/ onResume()
(& 为什么??),所以不会是多余的......
解决方案
将您Observer
的 s 设置在您LiveData
的输入onCreate
(或类似onViewCreated
片段中)上。当有新值进入时,这些观察者函数应该更新 UI,所以你只需编写函数告诉它如何更新——在 this 中显示这个值TextView
,那种东西)。
一旦你把它连接起来,用户界面就会随着LiveData
变化而自我更新。如果这些LiveData
s 已经有数据,您将在调用时立即获得它observe
- 因此更新功能将运行并使用当前数据初始化您的 UI。
你只需要引用你的膨胀视图(比如TextView
你想更新的),这样你就可以在更新函数中使用它们。这就是为什么它必须在你调用setContentView
in之后onCreate
,或者onViewCreated
在一个片段中,你可以访问 inflated view
。
LiveData
(以及任何其他生命周期感知组件)将在您从onStop
toonResume
等时自动更新,并且您的更新将会发生
推荐阅读
- rest - REST API 将文件从 S3 传递到客户端
- javascript - 如何在旋转之前计算图像容器(画布)内裁剪区域的顶部和左侧偏移量?
- java - 特殊开关盒初始化工作,但为什么?Java SwitchCase
- jekyll - jekyll:如何首先/从永久链接中删除
- asp.net - 模型中的日期不显示在 TextBoxFor 中
- python-3.x - 如何使用每列的单独排序函数在多列上对 Pandas DataFrame 进行排序
- heroku - rails 6 heroku资产预编译在生产中不起作用
- html - 在 SVG 上悬停时显示文本时出现问题
- css - 如何强制具有固定纵横比的 youtube iframe 始终留在容器内?
- spring-boot - Spring AOP 中 @Around 建议的未绑定切入点参数