1

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()
                }
            }
    }
kkkkk
  • 572
  • 1
  • 10
  • 21

0 Answers0