我使用Retrofit2获取在地图上选择的指定位置的信息,并通过调用方法getLabelFromServer
将其显示在我的应用程序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 :(得分:0)
check call.isExecuted();在给出下一个请求之前的方法。 如果返回true,则表示您的请求已完成。 否则,它还没有完成,所以调用call.cancel()方法取消请求并重新启动您的请求