Как я могу получить цепочку запросов на залп с обновлениями индикатора выполнения

У меня есть несколько запросов 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 синхронизирующих последовательных запросов залпа в фоновом потоке (или AsyncTask) - подробнее belvi.xyz/posts/Using-Volley

pskink 10.09.2018 17:44

Не думаю, что вы прочитали мой вопрос полностью! Я знаю, как сделать запрос на залп. Я хочу знать, как добавить индикатор выполнения, который показывает обновления для каждого ...

Yuma Technical Inc. 10.09.2018 17:53

Итак, вы хотите непрерывное обновление прогресса (поскольку байты считываются из сети), а не только 10 шагов в общем прогрессе?

pskink 10.09.2018 17:57

хорошо, я нашел этот залп часто задаваемые вопросы, и кажется, что у вас не может быть непрерывного обновления прогресса - так как я сказал: запускайте ваши запросы синхронизировать залпа в цикле - точно так же, как в этом фрагмент кода - здесь вместо totalSize += Downloader.downloadFile(urls[i]); вызовите ваш запрос залпа синхронизации

pskink 10.09.2018 18:16

спасибо, что имеет смысл! Если вы можете дать ответ, я могу отметить его как правильный.

Yuma Technical Inc. 10.09.2018 18:24

кстати, если вы хотите непрерывное обновление прогресса, переключитесь на okhttp / retrofit - залп здесь хромой инструмент

pskink 10.09.2018 18:27
0
6
479
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я пытался использовать математическое выражение, которое не сработало, поэтому индикатор выполнения не двигался.

Когда я заменил число простым уравнением (см. Ниже), оно сработало нормально.

Я установил переменную на общее количество запросов. Я хотел передать процент для каждого, поэтому попробовал (1 / num) * 100. Затем я понял, что он обрабатывает его как целое число, поэтому я добавил (float) впереди. При отладке я обнаружил, что часть в скобках соответствует положению, как и ожидалось. Но * 100 не работал.

Другие вопросы по теме