如何更有效地更新 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
等时自动更新,并且您的更新会发生
我正在重新使用 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
等时自动更新,并且您的更新会发生