【发布时间】:2018-05-23 08:55:36
【问题描述】:
我目前正在实施 Room 来替换我的旧 SQL 代码,但我遇到了一个问题,即在后台运行时我的查询非常慢。
例如,我有两个相同的查询,一个在 UI 线程上运行,另一个返回 Single。我正在使用allowMainThreadQueries() 来测试这个案例。
@Query("SELECT * FROM event ORDER BY `begin` ASC LIMIT $LIMIT")
fun getUIThreadSchedule(): List<Event>
@Query("SELECT * FROM event ORDER BY `begin` ASC LIMIT $LIMIT")
fun getSchedule(): Single<List<Event>>
现在,当我运行这两种方法并比较时间得出结果时,它们是非常不同的。
这需要大约 6 毫秒才能完成。
val events = database.getUIThreadSchedule()
这需要大约 360 毫秒才能完成。
database.getSchedule()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
// elements are now here
}, {
// show an error view
})
我尝试使用其他选项,例如Flowable,但结果是一样的。
有人知道我做错了什么吗?
谢谢。
【问题讨论】:
标签: android performance rx-java2 android-room