liveData builder 功能解决了什么问题?

Arc*_*nes 5 android kotlin android-livedata kotlin-coroutines

因此有一个新的构建器函数LiveData

val someLiveData = liveData {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

谁能准确解释这个新的构建器功能解决了什么问题?它如何解决轮换问题?它与 Web 服务调用有何关系?

任何意见将不胜感激。提前致谢。

Ens*_*lic 2

谁能准确解释这个新的构建器功能解决了什么问题?

当前的文档liveData { }非常好,并提供了很多示例。以下是您通过使用它免费获得的一些好处:

  • 自动支持超时和通过可选取消timeoutInMs(默认为 5 秒)。
  • 无需init { }块显式启动协程来初始化MutableLiveData<T>(该假设的协程如下所述C)。
  • 无需担心启动C范围
  • 无需维护代码来等待启动, C直到实际需要为止(即LiveData有任何已注册和活动的观察者)。
  • C重新激活 LiveData 时无需编写重新启动代码。

它如何解决轮换问题?

LiveData其本身并不能解决在屏幕旋转等过程中保留状态的任何问题。这就是ViewModel目的。通常,您LiveDataViewModel. 但屏幕旋转问题与liveData { }

它与 Web 服务调用有何关系?

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