【问题标题】:What problem does liveData builder function solve?liveData builder函数解决了什么问题?
【发布时间】:2019-06-03 04:56:46
【问题描述】:

所以LiveData 有一个新的构建器函数,即:

val someLiveData = liveData {
    // do something
}

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

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

【问题讨论】:

  • 对于投票支持该主题以“过于宽泛”的人来说,谁能建议如何分解这个主题?

标签: android kotlin android-livedata kotlin-coroutines


【解决方案1】:

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

liveData { } 上的当前documentation 相当不错,并且提供了很多示例。使用它可以免费获得以下好处:

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

它如何解决轮换问题?

LiveData 本身并不能解决保留状态的任何问题,例如屏幕旋转。这就是ViewModel 的用途。通常,您的ViewModel 中有LiveData 属性。但是屏幕旋转问题和liveData { }没有直接关系@

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-21
    • 2017-08-26
    • 2010-09-21
    • 1970-01-01
    • 2011-04-06
    • 2019-12-29
    • 2011-01-21
    • 1970-01-01
    相关资源
    最近更新 更多