6

它们到处告诉我们应该使用 ASyncTaskLoaders,因为它们非常擅长不阻塞 UI 线程。现在有 Volley 可以使用。

我想我们不能同时使用它们,因为 Volley 自己做背景。你怎么看?哪一个更好?

4

5 回答 5

3

这两种技术是不同的,几乎没有可比性。他们有不同的目的,也可以一起工作。例如,您可以实现一个使用 Volley 加载数据并直接从 Loader 继承的 Loader(不是 AsyncTaskLoader,因为 Volley 也处理线程)。

使用 Loaders 的主要优点:

  • Lifecycle 自动与 Activity/Fragment 生命周期同步
  • 配置更改不会丢失数据和加载状态
  • 加载器监视更改并将新结果自动推送到客户端片段/活动。

使用 Volley 的主要优点:

  • 高性能网络堆栈
  • 遵循 HTTP 服务器策略的自动磁盘缓存
  • 强大的取消机制。

您可以将两者结合起来以获得这两种优势,或者您可以使用 Volley 没有加载器及其简单的 API。

于 2014-04-22T19:35:36.043 回答
2

我已经使用 Volley 一个月了,我不得不说我非常满意。不必担心线程实现细节确实有很大帮助。到目前为止,通用网络和远程图像加载都运行良好。

并不是说没有问题,但到目前为止,问题很小。

于 2013-09-02T14:29:23.083 回答
1

你最好这样问 volley vs Async vs RxJava

您可以将此RXJava 用于后台线程,但为了提高调用 RESTful 服务的效率,强烈建议使用 Volley,与异步任务加载器相比,所需的编码也非常少!

于 2013-09-03T07:49:16.787 回答
1

这是一篇关于当前 Android 最佳实践的文章。它讨论了VolleyRXJava的使用:https ://github.com/futurice/android-best-practices

于 2015-02-13T22:26:26.303 回答
0

您可以将两者结合起来,以获得两种优势。

在您的活动(主线程)中,您使用 Volley 调用您的 API。使用简单的接口机制,您可以在数据可用时回调您的主线程。然后你forceLoad()的 AsyncTaskLoader 使用来自 Volley 的新数据。在您的 AsyncTaskLoader 中,您可以为所有活动的容器补充水分。当数据可用时,它们将自动加载。

使用此方法,您可以结合 Volley 的自动磁盘缓存和 Loader 的自动同步。

于 2020-05-10T16:44:57.870 回答