дооснащение поддерживает отмену очереди, и это прекрасно работает.
И я думаю, что если вы попытаетесь запустить этот код - ваша клиентская очередь будет остановлена
protected void Load(String url) {
Request request = new Request.Builder()
.url(url)
.build();
Call<Response> mCall = mClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (call.isCanceled()) {
Log.e(TAG, "request was cancelled");
}
else {
Log.e(TAG, "other larger issue, i.e. no network connection?");
}
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
if (response.isSuccessful()) {
mHandler.post(new Runnable() {
@Override
public void run() {
mEdit.setText(mEdit.getText() + "run()\n");
}
});
}
}
});
mCall.cancel();
}
Я не знаю, как вы проектируете структуру и какие шаблоны вы используете (MVP, MVVM или другие), но в простом случае этот код можно улучшить, возвращая Call
protected void Load(String url): Call<Response>
И тогда вы можете изменить свой статус запроса, например, если он дольше 5 секунд, вы звоните call.cancel()
и запрос останавливается.