사용하여 요청을 취소하는 방법. 문제는입니다. CHAR을 삽입 할 때마다 새로운 요청을하지만 동시에 이전 요청을 취소해야합니다! 예 : 뉴욕 = 13 건의 요청 그래서 나는 Call
의 단일 인스턴스를 사용하여 요청되었지만 성공하지 못한 것을 취소하려고합니다. 이것이 내가 한 일이다!내가 주소를 입력하여 몇 가지 예측을받을 수 <code>Google Places AutoComplete</code>을 사용하여, <strong>OKHTTP</strong>와 <strong>MANAGER</strong> 어떤 요청을 할 수 있어야합니다 OKHTTP
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
객체가 null의 경우 확인 요청을 취소하지만 여전히오고 계속! 다음에 대한
사용자가 입력 한 각 문자에 대한 요청을 만드는 이유는 무엇입니까? 일부 시간 초과 (예 : 1 초)를 추가하고 사용자가 1 초 동안 아무 것도 입력하지 않은 경우에만 요청을 보냅니다. 예제 코드를 제공 할 수 있습니다. – babay
제공하는 것이 좋을 것입니다. 감사합니다! –