Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当一个请求仍在执行时,如何取消改装请求?_Android_Retrofit - Fatal编程技术网

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,这是我不想要的。