2017-12-25 32 views
0
내가지도에 선택된 특정 위치에 대한 정보를 얻을 아래와 같은 방법 getLabelFromServer를 호출하여 내 응용 프로그램의 UI에 표시 할 Retrofit2를 사용

을 업데이트 UI 마지막 API 호출에 따라 있도록 여러 개조 호출을 관리하고 취소 할 수 있습니다. 사용자 이후이전 호출

내가 서버로부터 정보를 수신하기 위해 기다리고있는 동안, 내가받은 정보를 이전 호출을 취소하고 새 통화에 대한 응답에 새 위치 및 업데이트 UI에 대한 정보를 수신하기 위해 대기해야하는 위치를 선택 달라질 수 있습니다. 지금 사용자가 선택하지 않은 이전의 위치에 대한 정보를 표시하기 때문에 UI를 업데이트해야 그 이전 호출을 유의하시기 바랍니다. 가 어떻게 이것을 달성하기 위해 코드를 아래에 변경할 수 있습니다 (제가 UI 스레드에서이 방법 때마다 새로운 위치가지도에 선택 호출주의해야한다).

private void getLabelFromServer(Context ctx, GeoPoint geoPoint) { 
    MapServiceGenerator serviceGenerator = MapServiceGenerator.getInstance(ctx, null); 
    Call<JsonObject> call = serviceGenerator.getGeoCodeApi().getAddress(geoPoint.getLatitude() + "," + geoPoint.getLongitude()); 
    call.enqueue(new Callback<JsonObject>() { 
        @Override 
        public void onResponse(Call<JsonObject> call, Response<JsonObject> response) { 
         JsonObject result = response.body(); 
         String positionLabel = MapUtils.generateLabelFromJSON(result); 
         tvLabel.setText(positionLabel); 
        } 

        @Override 
        public void onFailure(Call<JsonObject> call, Throwable t) { 
         if (t != null) { 
          t.printStackTrace(); 
         } 
        } 
       } 
    ); 
} 
+0

체크 call.isExecuted(); 메서드를 호출하여 다음 요청을 제공합니다. 요청이 완료되면 true를 반환합니다. 나는'call.cancel()를 호출하면 –

답변

0

check call.isExecuted(); 메서드를 호출하여 다음 요청을 제공합니다. 요청이 완료되면 true를 반환합니다. 다른 , 그것은 요청을 취소 call.cancel() 메서드를 호출하므로 완료하고 요청을 시작 재되지 않은 다시

+0

당신은 알고, 무엇 결과가 될 것입니다 마십시오'하면'call.isExecuted는()'순간에 사실입니까? 예외가 발생하거나 문제없이 실행됩니까? – VSB