我刚刚开始使用 RxJava,我正在努力弄清楚如何以正确的方式使用 observables。
在下面我有一个寻呼机,我想在页面滚动时调用一个网络服务,以避免许多无用的调用。
所以我发现“去抖动”运算符是我正在寻找的,但在我的情况下它不起作用并且每次都会调用 Web 服务。
v.pager.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
val itemPosition : Int = layoutManager.findFirstCompletelyVisibleItemPosition();
Observable.just(itemPosition).debounce(1500, TimeUnit.MILLISECONDS).map {
retrieveUserDetail(userList[itemPosition])
}.observeOn(AndroidSchedulers.mainThread()).subscribe()
}
}
})
这段代码有什么问题?