liveData构建器函数可以解决什么问题?

时间:2019-06-03 04:56:46

标签: android kotlin android-livedata kotlin-coroutines

因此LiveData有一个新的生成器函数,即:

val someLiveData = liveData {
    // do something
}

谁能确切解释这个新的生成器函数可以解决什么?如何解决轮换问题?它与Web服务调用有何关系?

任何输入将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:1)

  

谁能确切解释这个新的生成器函数可以解决什么?

liveData { }上的当前documentation非常好,并给出了许多示例。您可以免费使用以下好处:

  • 自动支持超时,并通过可选的timeoutInMs取消(默认为5秒)。
  • 无需从init { }块显式启动协程来初始化MutableLiveData<T>(以下将这种假设的协程称为C)。< / li>
  • 无需担心在哪个范围内启动C
  • 无需维护代码即可等待启动 C,直到实际需要它为止(即LiveData具有任何已注册并处于活动状态的观察者)。
  • 重新激活LiveData时,无需编写代码即可重新启动C
  

它如何解决轮换问题?

LiveData本身并不能解决保存状态的任何问题,例如屏幕旋转。这就是ViewModel的目的。通常,您的LiveData中有ViewModel个属性。但是屏幕旋转问题和liveData { }

之间没有直接关系
  

它与网络服务调用有何关系?

由于您传递给liveData { }的代码块是一个暂停函数,因此您可以在Web服务中使用协程支持。例如, Retrofit 2.6.0 及更高版本在其HTTP请求函数定义中支持suspend修饰符,这使得在liveData { }代码块中使用非常方便。