如何使用 OKHTTP 取消请求
我需要能够使用OKHTTP管理一些请求,使用通过键入地址来接收一些预测。问题是每次我插入CHAR时,它都会发出新的请求,但同时我需要取消前一个请求!例如:纽约市 = 同时 13 个请求!因此,我正在使用一个实例,尝试取消已请求但未成功的任何内容。这就是我所做的!Google Places AutoCompleteCall
Address.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            if(Address.getText().toString().length() > 3){
                _Address = Address.getText().toString();
                if(call != null){
                    call.cancel();
                }
                Request request = new Request.Builder()
                        .url(getPlaceAutoCompleteUrl(_Address))
                        .addHeader("content-type", "application/json")
                        .addHeader("User-Agent", "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; google_sdk Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30")
                        .build();
                call = client.newCall(request);
                call.enqueue(new Callback() {
                    public void onResponse(Call call, final Response response) throws IOException {
                        final String result = response.body().string();
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Log.d("Response",result);
                                PlacePredictions place = null;
                                try {
                                    place = LoganSquare.parse(result,PlacePredictions.class);
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                                if(autoCompleteAdapter == null){
                                    autoCompleteAdapter = new AutoCompleteAdapter(CustomPlaces.this);
                                    recyclerView.setAdapter(autoCompleteAdapter);
                                    autoCompleteAdapter.Add(place.getPlaces());
                                }else {
                                    autoCompleteAdapter.Clear();
                                    autoCompleteAdapter.Add(place.getPlaces());
                                    autoCompleteAdapter.notifyDataSetChanged();
                                }
                            }
                        });
                    }
                    public void onFailure(Call call, IOException e) {
                        //fail();
                    }
                });
            }else {
                if(autoCompleteAdapter != null){
                    autoCompleteAdapter.Clear();
                }
            }
        }
我检查对象是否为空并取消请求,但仍然不断出现!call
 
					 
				 
				    		 
				    		 
				    		 
				    		