Android Volley请求奇怪的“1秒”多次快速点击之间的延迟

时间:2016-03-02 13:27:09

标签: android json delay android-volley android-imagebutton

对不起,我的英语不好,但我有问题,无法弄清楚..

我的片段中有自定义列表视图,用于从JSON数组中获取产品。我在每个listview行中都有3个ImageButtons;

加号按钮( + ),减号按钮( - )和删除按钮( X )..

因此,当我点击每个按钮时,它会调用JSON请求更新产品的件号,从响应中获取新数据并重新填充数组列表。

一切都还可以,但是,当我更快地点击那些按钮时,似乎在多个请求之间有 1秒延迟,即使第一次凌空请求之前已经完成。

这是我在 TableAdapter.java

中的JSON方法
public void JSON(final int position, final int process) {

    if (inProgress==false) {
        dialog = new ProgressDialog(myContext);
        dialog.setMessage("Updating.....");
        dialog.show();
        inProgress = true;
        System.out.println("**** Now request is beginning............");

        final int rowID = tableModelList.get(position).getID();
        final int treeID = tableModelList.get(position).getAna_dal();
        final float price = tableModelList.get(position).getBFiyat();
        final int quantity = tableModelList.get(position).getAdet();
        final int print = tableModelList.get(position).getYazdimi();

        final String insertUrl = "http://"+getServer+"/t6mobilservice/order-piece.php";

        Map<String, String> parameters  = new HashMap<>();
        parameters.put("tableID", "" + getTableId);
        parameters.put("rowID", "" + rowID);
        parameters.put("treeID", ""+treeID);
        parameters.put("process",""+process);
        parameters.put("quantity",""+quantity);
        parameters.put("price",""+price);
        parameters.put("print",""+print);

        CustomRequest jsObjRequest = new CustomRequest(Request.Method.POST, insertUrl, parameters, new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONArray getOrders = response.getJSONArray("order");

                    Gson gson = new Gson();

                    tableModelList.clear();
                    for (int i = 0; i < getOrders.length(); i++) {
                        JSONObject order = getOrders.getJSONObject(i);

                        TableModel tableModel = gson.fromJson(order.toString(), TableModel.class);
                        tableModelList.add(tableModel);
                    }

                    mAdapter.notifyDataSetChanged();

                    System.out.println("**** onResponse: Request is done............");
                    System.out.println("**** JSON: "+response.toString());

                    dialog.cancel();
                    inProgress = false;

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError response) {
                Log.d("Response: ", response.toString());
                inProgress = false;
            }
        });

        requestQueue.add(jsObjRequest);
    }
}

请求开始时显示对话框,请求完成时取消。但正如我所说,当我点击更快时,即使第一次请求已经完成,多个请求之间也会有延迟。我说 1秒,因为无论我如何快速点击,第二个请求都会在 1秒之后开始。我无法理解......

我测试了快速点击以显示带有随机数字的祝酒词并且它运行正常。但是当我使用JSON方法进行测试时,会有一个奇怪的延迟。

我的片段中有 SwipeRefreshLayout ScrollView 。 我正在使用Volley和单身人士。

编辑1.:这是显示我的问题的a video link ..

编辑2.:每次点击都会a LogCat output video

每次快速点击都会返回成功的json输出,但没有立即改变..

感谢您的帮助。

0 个答案:

没有答案