【问题标题】:Slow string http request with Volley使用 Volley 的慢速字符串 http 请求
【发布时间】:2017-09-28 17:05:35
【问题描述】:

我目前正在通过蓝牙将来自加速度计的大量数据从微控制器记录到一个数组列表中,如果需要,我会使用该数组列表进行绘图、标记和修剪。

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

当前的问题是,如果我在 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。

【问题讨论】:

    标签: android android-volley


    【解决方案1】:

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

    【讨论】:

    • 有趣,如果您知道我可以阅读的任何文档,我将不胜感激。
    【解决方案2】:

    您可以在 StringRequest 中使用 getBody 并使用 Map 添加您的值并每隔一段时间发送 x ammount。但是需要重新设计服务器以处理 json,并且您必须取消当前使用的 URI get 方法。或者您可以设计此方法来发送所有数据,用某个字符分隔每个值,但不确定哪个适用于 URI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 2011-10-29
      • 2019-03-18
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多