gpt4 book ai didi

android - emit 和 emitSource 与 LiveData 之间有什么区别? (如实时用例)

转载 作者:行者123 更新时间:2023-12-02 16:44:26 30 4
gpt4 key购买 nike

emit接受data类而emitSource接受LiveData<T> ( T -> data )。考虑以下示例:- 我有两种类型的调用:-

suspend fun getData(): Data // returns directly data

还有另一个;

suspend fun getData(): LiveData<Data> // returns live data instead

对于第一种情况,我可以使用:-

liveData {
emit(LOADING)
emit(getData())
}

我的问题:使用上述方法可以解决我的问题,为什么我们需要emitSource(liveData)反正 ?

Any good use-case for using the emitSource method would make it clear !

最佳答案

正如您所提到的,我认为它不能解决您所说的问题中的任何问题,但我通常这样使用它:

如果我想在从远程获取新数据时向用户显示数据库中的缓存数据,仅发出它,它看起来像这样:

liveData{
emit(db.getData())
val latest = webService.getLatestData()
db.insert(latest)
emit(db.getData())
}

但是使用emitSource,它看起来像这样:

liveData{
emitSource(db.getData())
val latest = webService.getLatestData()
db.insert(latest)
}

不需要再次调用emit,因为liveData已经有了源。

关于android - emit 和 emitSource 与 LiveData 之间有什么区别? (如实时用例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58546944/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com