代码之家  ›  专栏  ›  技术社区  ›  Yuma Technical Inc.

我怎么能有一个与进度栏更新截击请求链

  •  0
  • Yuma Technical Inc.  · 技术社区  · 6 年前

    我有多个使用volley的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());
            }
        })
    

    runOnUIThread 并尝试使用“onProgressUpdate”将整个代码块包装到“AsyncTask”中。但这行不通。

    如何正确合并进度更新?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Yuma Technical Inc.    6 年前

    我试着用一个数学表达式,但它不起作用,所以进度条没有移动。

    当我用一个简单的方程式(如下)代替一个数字时,效果很好。

    我将变量设置为请求总数。我想通过每个人的百分比,所以我试着 (1 / num) * 100 . 然后我意识到它把它当作一个整数,所以我加上 (float) 到前面去。对于debug,我发现括号中的部分和预期的一样好。但是 * 100