У меня есть несколько запросов HTTP (объект JSON), для которых я использую залп. Изначально у меня были все сразу. Теперь у меня они связаны, например, когда один запрос получает ответ и выполняет другой запрос, и так далее. Список был бы слишком длинным, чтобы показывать его здесь, но вот упрощенный пример:
//first request
JsonObjectRequest request = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response)
{
//second request
JsonObjectRequest request = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response)
{
//another request here...
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
Log.e("Volley Error", error.toString());
}
})
//first request continues
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
Log.e("Volley Error", error.toString());
}
})
Я хочу, чтобы индикатор выполнения показывал xx процентов после каждого ответа. Я пробовал runOnUIThread
и пытался обернуть весь блок кода в «AsyncTask» с помощью «onProgressUpdate». Но это не сработает.
Как я могу правильно включить обновление прогресса?
Не думаю, что вы прочитали мой вопрос полностью! Я знаю, как сделать запрос на залп. Я хочу знать, как добавить индикатор выполнения, который показывает обновления для каждого ...
Итак, вы хотите непрерывное обновление прогресса (поскольку байты считываются из сети), а не только 10 шагов в общем прогрессе?
хорошо, я нашел этот залп часто задаваемые вопросы, и кажется, что у вас не может быть непрерывного обновления прогресса - так как я сказал: запускайте ваши запросы синхронизировать залпа в цикле - точно так же, как в этом фрагмент кода - здесь вместо totalSize += Downloader.downloadFile(urls[i]);
вызовите ваш запрос залпа синхронизации
спасибо, что имеет смысл! Если вы можете дать ответ, я могу отметить его как правильный.
кстати, если вы хотите непрерывное обновление прогресса, переключитесь на okhttp / retrofit - залп здесь хромой инструмент
Я пытался использовать математическое выражение, которое не сработало, поэтому индикатор выполнения не двигался.
Когда я заменил число простым уравнением (см. Ниже), оно сработало нормально.
Я установил переменную на общее количество запросов. Я хотел передать процент для каждого, поэтому попробовал (1 / num) * 100
. Затем я понял, что он обрабатывает его как целое число, поэтому я добавил (float)
впереди. При отладке я обнаружил, что часть в скобках соответствует положению, как и ожидалось. Но * 100
не работал.
просто используйте 10 синхронизирующих последовательных запросов залпа в фоновом потоке (или
AsyncTask
) - подробнее belvi.xyz/posts/Using-Volley