gpt4 book ai didi

android - 使用 Volley 时如何保持进度条状态?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:24 25 4
gpt4 key购买 nike

当我使用带 fragment 回调的 AysncTask 时,很容易保持进度条状态,但我应该如何使用 volley 实现它?我不能使用 AsyncTask,因为它已经过时,而且 volley 更好更快。任何帮助或提示将不胜感激。

我正在使用 google 的 volley 来发布和获取请求

最佳答案

我认为这里存在误解。

首先,Volley 比 AsyncTask 更快。

这是比较苹果和橘子。他们都使用线程。 Volley 线程并不比异步任务中的线程快。队列是分开的,但仅此而已。在 API 11 及更高版本中,您可以为 AsyncTask 实例使用自己的线程池。

其次,更好地定义。

  • Volley 旨在向服务器发送大量轻负载 (GET/POST) 并快速返回响应。然后调用者可以使用这些响应。

  • AsyncTask 旨在完成 UI 线程之外的给定任务,并提供有关该任务状态的各种回调。

对于您的 ProgressBar,我假设您正在尝试确定正在执行的请求的进度。在 Volley 世界中,由于预计这些状态很小,因此您几乎有 3 个状态。

  • 未开始
  • 正在执行(也包含开始解析)
  • 完成(包括成功、错误和取消等)

如您所知,AsyncTask 在使用 publishProgress 时有一个针对 onProgress 的回调。因此,您的实例可以定义它想要发送的任何内容作为进度指示。

如果您的有效负载很大并且传输到服务器需要时间,那么 Volley 可能不合适。 Volley 并没有做得很好,甚至没有尝试很好地向服务器发送大量有效负载。原因是这不是它的本意。就像它要求所有有效负载、上传和接收都可以完全放入内存一样。因此,如果你有几个 Volley 请求,每个请求都有 1MB 的有效负载和 1MB 的响应,你会很快看到这个加起来。您需要一个流媒体选项来更好地处理这个问题。

Volley 是一个很棒的库,但考虑一下它的推荐用途。阅读代码的文档和实现以获取更多信息。

如果您正在做的事情需要相当长的时间,我会在 volley 中编写一个特定的请求类型,用于发送和流式传输内容。这样您就可以知道请求还剩下多少工作。我假设您使用发送和接收的字节数作为进度的衡量标准。

关于android - 使用 Volley 时如何保持进度条状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20687017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com