【发布时间】:2018-02-16 03:45:48
【问题描述】:
我有一个包含项目的回收站视图。当我单击一个项目时,我进行 api 调用以获取一些数据以将其附加到另一个回收器视图中,问题是当用户在回收器中的项目中单击多次时,它会发出许多 api 请求并返回最后一个,我只关心最后点击的项目请求,我想取消其余的请求并忽略它们我尝试使用计时器但它失败了
这是我当前的代码
@Override
public void onSelectedSourceClick(SelectedSource selectedSource, int position) {
newsAdapter.clearNewsList();
okHttpClient.dispatcher().cancelAll();
if (countDownTimer != null) {
countDownTimer.cancel();
}
countDownTimer = new CountDownTimer(500, 1000) {
@Override
public void onTick(long l) {
}
@Override
public void onFinish() {
//Make the request here
}
}
}.start();
}
但是这个解决方案实际上并不起作用,所以如果任何人有解决方案或使用 RxJava 来解决它。
【问题讨论】:
-
使用 Retrofit 2 的 Call 类来形成你的网络请求,它也允许取消它。使用数据结构(如 Stack)来保存添加的调用对象的列表,并在每次单击列表项并且必须创建新请求时检查它。如何取消请求 - futurestud.io/tutorials/retrofit-2-cancel-requests 可能也有 Rx 方式,但目前还不知道
标签: android rx-java retrofit2 okhttp3