在ViewModel的构造函数中,我立即启动协程进行一次网络调用。要基于此网络调用的结果更新UI,我将更新发布到ViewModel中的一些LiveData变量中。这些LiveData变量依次由片段观察,然后进行必要的UI更新。
我想知道这是否是从协程进行UI更新的有效方法。正如我之前提到的,网络请求仅是初始化时完成的一件事,因此LiveData变量将永远不会被更新一次以上。那么,在我的片段中设置观察者是否很浪费,因为我知道事实上它们只会被调用一次?如果是这样,哪种更好的方法呢?
谢谢!
然后在我的片段中设置观察者会很浪费,因为我知道事实上他们只会被调用一次?
它们可能被多次呼唤。
首先,LiveData
是值持有者。并且,特别是,通过在LiveData
中包含ViewModel
,可以保留LiveData
,并且在配置更改(屏幕旋转,暗模式切换等)中保持的值。
所以,流量可能会变成:
LiveData
LiveData
LiveData
接收值并更新UILiveData
]获得相同的视图模型>LiveData
LiveData
接收值并更新UI所以,您所描述的通常是合理的。