【问题标题】:Optimizing Volley优化排球
【发布时间】:2013-07-27 01:38:38
【问题描述】:

我在 android 中使用 Volley 库。我在浏览器中运行相同的 url,它会在不到一秒的时间内返回。我想知道,如何优化 Volley? 不清楚 Cache Queue Take 代表什么以及为什么是 3.6 秒。或者为什么要为 6.8 秒的响应时间添加缓存队列占用和网络完成?对于不使用 ETags 的服务,我应该如何优化 volley。还有什么是BasicNetwork.logSlowRequests

    07-26 09:52:31.395: D/Volley(5651): [4378] BasicNetwork.logSlowRequests: HTTP response   for request=<[ ]   http://theurl.com/path 0xd6183ced NORMAL 6> [lifetime=3172], [size=940], [rc=200],     [retryCount=0]
    07-26 09:52:31.400: D/Volley(5651): [4377] BasicNetwork.logSlowRequests: HTTP response for request=<[ ]   http://theurl.com/path 0xd6183ced NORMAL 5> [lifetime=3182], [size=940], [rc=200], [retryCount=0]
    07-26 09:52:31.445: D/Volley(5651): [1] MarkerLog.finish: (6848 ms) [ ]   http://theurl.com/path 0xd6183ced NORMAL 6
    07-26 09:52:31.445: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [ 1] add-to-queue
    07-26 09:52:31.445: D/Volley(5651): [1] MarkerLog.finish: (+3622) [4376] cache-queue-take
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+6   ) [4376] cache-hit-expired
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [4378] network-queue-take
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+3173) [4378] network-http-complete
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+36  ) [4378] network-parse-complete
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+11  ) [4378] network-cache-written
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [4378] post-response
    07-26 09:52:31.455: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [ 1] done
    07-26 09:52:31.455: D/
    07-26 09:52:31.525: D/Volley(5651): [1] MarkerLog.finish: (6998 ms) [ ]   http://myurl  0xd6183ced NORMAL 5
    07-26 09:52:31.525: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [ 1] add-to-queue
    07-26 09:52:31.530: D/Volley(5651): [1] MarkerLog.finish: (+3683) [4376] cache-queue-take
    07-26 09:52:31.530: D/Volley(5651): [1] MarkerLog.finish: (+7   ) [4376] cache-hit-expired
    07-26 09:52:31.530: D/Volley(5651): [1] MarkerLog.finish: (+1   ) [4377] network-queue-take
    07-26 09:52:31.530: D/Volley(5651): [1] MarkerLog.finish: (+3184) [4377] network-http-complete
    07-26 09:52:31.535: D/Volley(5651): [1] MarkerLog.finish: (+39  ) [4377] network-parse-complete
    07-26 09:52:31.535: D/Volley(5651): [1] MarkerLog.finish: (+21  ) [4377] network-cache-written
    07-26 09:52:31.535: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [4377] post-response
    07-26 09:52:31.535: D/Volley(5651): [1] MarkerLog.finish: (+63  ) [ 1] done

【问题讨论】:

  • 有人在听 android-volley 吗?
  • check this 可能对你有帮助。

标签: android android-volley


【解决方案1】:

我刚刚在这里回答了这个问题:How to optimize network-queue-take in android Volley? (Volley Google IO 2013)

logSlowRequests 只记录速度较慢的请求(超过 3000 毫秒),没有什么比这更复杂的了。 network-http-complete 是下载请求并将其传递给解析器所需的时间。

【讨论】:

  • 嗨,你能告诉我生命周期在此意味着什么吗:BasicNetwork.logSlowRequests: HTTP response for request= [lifetime=7106],
【解决方案2】:

尝试使用这个Enhanced-volley

该项目基于 Google 自己创建的 Volley Networking Toolkit for Android。该工具包本身确实很棒且可扩展,但它缺少一些功能。该项目旨在将这些功能添加到 Volley 工具包中,使其成为更完整的 HTTP 解决方案。

您还可以自定义使用 Java NIO(新 IO)的库来改善回调/响应时间。 使用 Socket.IO

有些人还尝试通过 OKHTTP 使用 volley

感谢维奈先生

【讨论】:

    【解决方案3】:

    我也遇到过类似的情况。我没有像您那样注意到时间延迟,但它显示在浏览器中而不是我的应用程序中。从本质上讲,清除缓存帮助了我。

    您可以通过以下方式清除缓存:

    Requestqueue.getcache().clear();
    

    如果你想禁用jsonrequests 的缓存,你可以这样做:

    jsonrequest.setshouldcache(false)
    

    这解决了我的缓存问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-10
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 2022-12-16
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多