gpt4 book ai didi

android - 使用RxJava将列表插入 session 室数据库

转载 作者:行者123 更新时间:2023-12-02 13:29:36 25 4
gpt4 key购买 nike

我有一个要映射的项目列表,然后插入到“房间”表中:

房间

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(vararg projectLocal: ProjectLocal): Completable

FIRST 方法来保存数据:
Observable.fromIterable(remoteProjects)
.map { project ->
...
mProjectMapper.mapRemoteToLocal(project)
}
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe {
mProjectRepository.saveProject(it)
}

如您所见,我是 observing on -> main threadsubscribing on -> io
用于存储数据的第二种方法:
remoteProjects.forEach { remote ->
...
val project = mProjectMapper.mapRemoteToLocal(remote)
mProjectRepository.saveProject(project)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe()
}

哪一个更有意义?是否有更好的方法使用RxJava将所有这些数据保存在Room数据库中?

最佳答案

我认为这就是@Mwasz的意思:

Observable.fromIterable(remoteProjects)
.map { project ->
mProjectMapper.mapRemoteToLocal(project)
}
.toList()
.flatMapCompletable {
mProjectRepository.saveProject(it)
.subscribeOn(Schedulers.io())
}
.subscribe()

您也可以使用 reducecollect代替 toList,但 toList()是最简单的。

关于android - 使用RxJava将列表插入 session 室数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62258802/

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