如何再次调用LiveData协程块

问题描述 投票:0回答:1

我正在使用LiveData的版本“ androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha05”。一旦LiveData块成功执行,我想明确触发它再次执行,例如

  1. 我导航到片段
  2. 用户的数据加载
  3. 我在同一片段中单击删除btn
  4. 用户数据应刷新

我有一个片段,可以观察我的LiveData,一个带有LiveData和存储库的ViewModel:

ViewModel:

  fun getUserLiveData() = liveData(Dispatchers.IO) {

   val userData = usersRepo.getUser(userId)

   emit(userData) 
}

片段:

viewModel.getUserLiveData(viewLifecycleOwner,
            androidx.lifecycle.Observer {.. 

然后我正在尝试实现所需的行为,例如:

viewModel.deleteUser()

viewModel.getUserLiveData()

根据LiveData块下面的文档,如果它已成功完成并且如果在LiveData块中放入while(true),则数据将刷新,但是我不希望这样做因为我需要及时更新视图。

如果[块]成功完成由于[LiveData]以外的原因而被取消变为非活动状态,即使[LiveData]处于活动状态,它仍将重新执行[[不会]]无效周期。

也许我缺少一些东西,我该如何重用相同的LiveDataScope来实现这一目标?任何帮助,将不胜感激。

我正在使用LiveData的版本“ androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha05”。一旦LiveData块成功执行,我想明确触发它再次执行,例如我浏览...

android kotlin android-livedata kotlin-coroutines android-viewmodel
1个回答
0
投票
您可以创建一个可观察对象,并在viewModel中设置该值,然后在片段中对其进行观察。这是您可以使用的示例:
© www.soinside.com 2019 - 2024. All rights reserved.