Android 当一个请求仍在执行时,如何取消改装请求?
有没有办法确定一个请求是否仍在翻新中执行? 如果一个请求仍在执行且尚未完成,我想取消该请求Android 当一个请求仍在执行时,如何取消改装请求?,android,retrofit,Android,Retrofit,有没有办法确定一个请求是否仍在翻新中执行? 如果一个请求仍在执行且尚未完成,我想取消该请求 // fetch Results private void fetchResults(CharSequence s) { if (s.toString().length() > 3){ mSearchResult.clear(); mAdapter.notifyDataSetChanged(); HashMap hashMap = new
// fetch Results
private void fetchResults(CharSequence s) {
if (s.toString().length() > 3){
mSearchResult.clear();
mAdapter.notifyDataSetChanged();
HashMap hashMap = new HashMap();
hashMap.put("q", s.toString());
PrefManager pref = new PrefManager(SearchActivity.this);
String token = pref.getAuthenticationToken();
Call<AppointmentsModel> call = mAPIService.getResults("Token " + token, hashMap);
call.enqueue(new Callback<AppointmentsModel>() {
@Override
public void onResponse(Call<AppointmentsModel> call, Response<AppointmentsModel> response) {
List<Result> resultList = response.body().getResult();
mSearchResult.addAll(resultList);
mAdapter.notifyDataSetChanged();
showNoSearchResults();
}
@Override
public void onFailure(Call<AppointmentsModel> call, Throwable t) {
if (BuildConfig.DEBUG) Log.d(TAG, "onFailureRetrofit: " + t.toString());
}
});
}else{
showNoSearchResults();
}
}
//获取结果
私有void fetchResults(字符序列){
如果(s.toString().length()>3){
mSearchResult.clear();
mAdapter.notifyDataSetChanged();
HashMap HashMap=新的HashMap();
put(“q”,s.toString());
PrefManager pref=新的PrefManager(SearchActivity.this);
字符串令牌=pref.getAuthenticationToken();
Call Call=mAPIService.getResults(“令牌”+令牌,hashMap);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
List resultList=response.body().getResult();
mSearchResult.addAll(结果列表);
mAdapter.notifyDataSetChanged();
showNoSearchResults();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
if(BuildConfig.DEBUG)Log.d(标记为“onfailureReformation:”+t.toString());
}
});
}否则{
showNoSearchResults();
}
}
只要一个请求已经生效,我就想取消呼叫。你能告诉我在哪里做同样的事情吗。谢谢。让它成为全球:
Call<AppointmentsModel> call;
public void afterTextChanged (Editable s) {
if(call != null && call.isExecuted()) {
call.cancel();
}else{
//Your network call
}
}
Call;
公共无效后文本已更改(可编辑){
if(call!=null&&call.isExecuted()){
call.cancel();
}否则{
//你的网络电话
}
}
您能告诉我在哪里做同样的事情吗?对于我所要求的结果,通过查看上面的代码?在调用第二个请求之前,以及如何找到它的第一个请求还是第二个请求?为什么要取消请求?有什么具体原因吗?因为它会两次填充我的recyclerview,因为一个请求正在进行中,而另一个请求再次命中API,这是我不想要的。