Intereting Posts
Проверка IP-адреса в android Android – внутреннее хранилище и внешнее хранилище, когда приложение установлено на SD-карте Android, используя SimpleCursorAdapter для установки цвета не только строк Сделать новую активность за старой в процессе перехода Обратный вызов при отклонении DialogFragment Метод WebView + WebChromeClient onCreateWindow не вызывается для target = "_ blank" Проблема Eclipse при установке нового программного обеспечения Чтение сообщений в ящике определенного номера и отображение их в действии Android Studio 1.0 и ошибка «Библиотечные проекты не могут установить applicationId» Как создать учетную запись Exchange в Android-эмуляторе с помощью 4.3 Как использовать видимые и невидимые для кнопки в android Путь Android APK не указан для модуля Щелчок по фрагменту вызывает активность за ним Трансфузия против AndroidAnnotations Как увеличить зону действия кнопки Android без масштабирования фона?

Дооснащение "IllegalStateException: уже выполнено"

У меня есть сетевой дооснащение, которое id запускается каждые 5 секунд. Мой текущий код:

Handler h = new Handler(); int delay = 5000; //milliseconds h.postDelayed(new Runnable() { public void run() { call.enqueue(new Callback<ApiResponse>() { @Override public void onResponse(Response<ApiResponse> response) { Log.d("api", "response: " + response.body().getPosition().getLatitude().toString()); } @Override public void onFailure(Throwable t) { } }); h.postDelayed(this, delay); } }, delay); 

Это выполняется один раз, но затем выдает следующее:

Java.lang.IllegalStateException: уже выполнено. В retrofit2.OkHttpCall.enqueue (OkHttpCall.java:52) в retrofit2.ExecutorCallAdapterFactory $ ExecutorCallbackCall.enqueue (ExecutorCallAdapterFactory.java:57) в orbyt.project.MyFragment $ 1.run (MyFragment.java:93)

В чем проблема?

В качестве бонуса: что лучший способ справиться с этим? Я буду обновлять карту при каждом обновлении. Я думал о попытке использовать Rx, но не уверен, что это подходящий прецедент или как его реализовать.

Solutions Collecting From Web of "Дооснащение "IllegalStateException: уже выполнено""

Call можно использовать только один раз. В его документации рассказывается, как использовать один раз:

Используйте clone() чтобы сделать несколько вызовов с одинаковыми параметрами на одном и том же веб-сервере; Это может быть использовано для выполнения опроса или для повтора неудачного вызова.

Поэтому используйте call.clone().enqueue(..) чтобы убедиться, что у вас есть новый, неисполненный Call для каждого запроса.