Volley

时间:2017-09-28 17:05:35

标签: android android-volley

我目前正在通过一个加速度计从微控制器到一个arraylist记录来自加速度计的大量数据,如果需要,我可以将其处理为图形,标签和修剪。

稍后,我通过字符串http请求使用 for循环中的volley将此信息发送到捕获此信息并将其存储到PostgresQL数据库中的URL。

目前的问题是,如果i记录让我们在3分钟内说4500个值,那么应用程序大约需要4分钟才能发送所有信息。由于我是相对新的,我不知道是否有更好的方法或我编码的东西有什么问题。

代码如下:

RequestQueue queue = Volley.newRequestQueue(Graphs.this);

for (int i = porIntLeft; i < porIntRight; i++) {

    String url = "*URL GOES HERE*/new?x=" + String.valueOf(ValoresX.get(i)) + "&y=" + String.valueOf(ValoresY.get(i)) + "&z=" + String.valueOf(ValoresZ.get(i)) + "&label=\"" + Label + "\"";


    StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });
    queue.add(stringRequest);

我在线程中运行,因为我同时显示了ProgressDialog。

2 个答案:

答案 0 :(得分:0)

您是否发送了4500个HTTP请求?当然需要很多时间。而是收集您的数据并将其放在例如json文档中。并在一个HTTP请求中发送该文档(当然,如果您可以更改后端以允许这样做)。

答案 1 :(得分:0)

你可以在StringRequest中使用getBody并使用Map来添加你的值并经常发送x ammount。但是服务器需要重新设计才能处理json,你必须取消当前使用的URI get方法。或者你可以设计这个方法来发送所有数据,用一些char分隔每个值,但不确定哪个适用于URI。