【问题标题】:Issues and contribution for Volley [closed]Volley的问题和贡献[关闭]
【发布时间】:2013-05-16 00:25:40
【问题描述】:

由于有这个awesome presentation on Volley,我试图将它包含在我正在从事的项目中。我发现自己正在纠正我在已发布的source code 中发现的一些错误。

是否有人知道是否会有一些 GitHub 项目可以为该项目做出贡献,或者是否有其他方式可以将错误和功能请求传达给开发人员?

关于我在 Volley 上遇到的问题:

1。似乎重定向不起作用: Volley 返回错误代码302,而不是重定向到响应标头中给出的位置。

2。获取缓存目录在我运行 4.2.2 的模拟器上不起作用:

cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);  
final String cacheDir1 = "/Android/data/cache/";
cacheDir = new File(Environment.getExternalStorageDirectory().getPath() + cacheDir1);

不过,此解决方法是特定于平台的。只是想为了完成而添加它。

除此之外,我认为 Volley 确实是一段很棒的代码,并且正是我在自己完成之前一直在寻找的;)

更新 1

这里是contribution page AOSP 的另一个链接。我认为它更像是一个独立的库。我会检查一下,尽管我仍然很欣赏有关 Volley 的更多信息和教程。 我建议的源代码只是一个快速而肮脏的修复,它在我的演示项目中起到了作用。

更新 2

我发现另一个interesting blog post by Ognyan Bankov 被提及作为对另一个问题的回应,这可能会有所帮助。

【问题讨论】:

  • 您可以随时向 AOSP 提交提交,因为此库是其中的一部分。不确定是否会接受硬编码路径。如果你不想在那里提交,你可以在 Github 或其他地方创建自己的开源仓库
  • 查看回收似乎也被卡住了。除非我用错了。也会对此感兴趣。
  • @yarian, Volley 不会为您处理视图的回收。如果视图被回收,您应该取消之前的请求。 ImageLoader.get 返回一个 ImageContainer,它有一个 cancelRequest 方法。
  • @vmironov 如果您使用 NetworkImageView,它应该会为您处理。至少根据 Google I/O 演讲。看 12 点 18 分。他谈到了视图回收,然后说“或者您可以使用工具箱中的 NetworkImageView 来为您完成所有工作。”
  • 您可以通过volley google group与开发人员交流错误和功能请求

标签: android networking open-source android-volley bug-reporting


【解决方案1】:

似乎在 cmets 中已经回答了很多问题,但我会尝试涵盖其余部分,或者更确切地说,我会尝试涵盖您的具体问题。

1) Volley 不自己处理重定向。它由底层的 HttpStack 处理。例如,我目前使用 OkHttp(来自 Square)作为 Volley 的 HTTP 客户端。见https://plus.google.com/108284392618554783657/posts/eJJxhkTQ4yU https://gist.github.com/JakeWharton/5616899 OkHttp 很棒,因为它在处理 SPDY、重定向和其他 HTTP 便利方面具有出色的默认值。您还可以使用它来为平台 HttpUrlConnection 实现您自己的默认值(例如,在将连接传递给 Volley 之前在连接上调用 followRedirects() --- https://developer.android.com/reference/java/net/HttpURLConnection.html#setFollowRedirects(boolean)

2) 我什至不确定是否将 getCacheDir() 用于 Volley 缓存。根据文档 (https://developer.android.com/reference/android/content/Context.html#getCacheDir()),该缓存目录不应超过 1 mb。然而,大多数客户端倾向于使用 10 mb 作为 http 缓存的默认值(1 mb 对于 Http 缓存来说真的很小!!)。另外,你为什么要使用这么深的缓存目录?没有理由“cacheDir1”应该是多个目录。只需将其设为文件名即可。 getCacheDir() 无论如何都会返回您自己的文件夹。我建议在初始化 Volley 时这样做(通常推荐的地方是 Application 类):

File volleyCacheFile = new File(getExternalCacheDir(), "volleyCache.tmp");

当然,这缺少任何错误处理(如果外部存储不可用怎么办?)。另外,不要忘记您需要适当的权限才能写入外部存储。

希望对您有所帮助。

【讨论】:

  • 感谢此信息,这为我清除了一切。我会接受这个答案,因为这个问题更像是一个讨论,你的回复以某种方式涵盖了剩下的问题。尽管如此,我还是希望有更好的文档/性能和 volley 示例,特别是关于异步位图加载/缓存与 listViews 的结合,但让我们看看未来会带来什么。 :)
猜你喜欢
  • 1970-01-01
  • 2013-01-08
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 2012-06-27
  • 1970-01-01
相关资源
最近更新 更多