当我将 AysncTask 与片段回调一起使用时,维护进度条状态很容易,但我应该如何用 volley 实现它?我不能使用 AsyncTask,因为它已经过时了,而且 volley 更好更快。
任何帮助或提示将不胜感激。
我正在使用谷歌的齐射来发布和获取请求
我认为这里存在一些误解。
首先,Volley 比 AsyncTask 更快。
这是比较苹果和橙子。他们都使用线程。 Volley 线程并不比异步任务中的线程快。队列是分开的,但仅此而已。在 API 11 及更高版本中,您可以使用自己的线程池AsyncTask
实例。
其次,更好地定义。
为您ProgressBar
我假设您正在尝试确定正在执行的请求的进度。在 Volley 世界中,由于这些状态预计很小,因此几乎有 3 个状态。
- 没有开始
- 执行(还包含开始解析)
- 完成(包括成功、错误和取消等)
正如你所知AsyncTask
有一个回调onProgress
使用时publishProgress
。因此,您的实例可以定义它想要发送的任何内容作为进度指示。
如果您的有效负载很大并且需要时间才能传输到服务器,那么 Volley 可能不合适。 Volley 在向服务器发送大量有效负载和从服务器发送大量有效负载方面做得并不出色,甚至没有尝试做得很好。原因是这不是它的目的。就像它要求所有有效负载、上传和接收都可以完全装入内存一样。因此,如果您有几个齐射请求,并且每个请求都有 1MB 的有效负载和 1MB 的响应,您可能会发现这一数字很快就会增加。您需要一个流媒体选项来更好地处理这个问题。
Volley 是一个很棒的库,但请考虑一下它的推荐用途。阅读代码的文档和实现以获取更多信息。
如果您要做的事情需要相当长的时间,我会在 volley 中编写一个特定的请求类型,用于发送和流式传输内容。这样您就可以知道该请求还剩下多少工作。我假设您使用发送和接收的字节数作为进度衡量标准。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)