Method refresh() is called very often. How to make this code better? How to use RX to avoid unnecessary computation? Last result will always be needed to be published.
So far I only added a code to avoid do a computation at the same time. Also I repeat computation if were a request.
var duringRefresh = false
var repeat = false
@Synchronized
fun refresh() {
if (duringRefresh) {
repeat = true
return
}
duringRefresh = true
Single.fromCallable {
//do some operation on db
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { t1, t2 ->
//publish result to UI
duringRefresh = false
if (repeat) {
repeat = false
refresh()
}
}
}