5

在解析网络响应时,我们在 Volley 库中收到 OutOfMemory 错误。这发生在蹩脚手机上的大量响应中。这可以避免吗?有没有办法告诉 Volley 分批解析响应?

这是一个例外:

07-18 14:33:41.449    6130-6154/com.tinder E/AndroidRuntime: FATAL EXCEPTION: Thread-22
    java.lang.OutOfMemoryError
    at java.lang.String.<init>(String.java:325)
    at java.lang.String.<init>(String.java:276)
    at com.android.volley.toolbox.JsonObjectRequest.parseNetworkResponse(JsonObjectRequest.java:66)
    at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:116)

这发生在 Droid X (2.3.4) 上。

4

2 回答 2

3

我唯一一次在 Volley 中看到OutOfMemoryErrors 是当我的代码中出现 OS 2.3 特定的内存泄漏时。如果您可以可靠地重现此错误(例如在使用测试数据的自动化测试中),那么您可能应该在 Google Android 论坛中提出问题。

如果它可能对其他人有所帮助,我将Volley 源代码复制到我自己的 Github 存储库中并进行了一些小改动,以便将OutOfMemoryErrors 处理为VolleyErrors。这使得记录/处理低内存条件变得更加清晰。

这是具体的提交:
https ://github.com/daj/volley/commit/c9e28fceda34074dda3734561502a20a28167ca9

于 2013-11-26T03:06:24.353 回答
1

所以,为了解决这个问题,我改用通用的 HttpConnection 和 JsonReader 来解析输入流。希望有人会添加到 Volley 并使其能够返回 JsonReader ...也许会是我...在我丰富的业余时间...

于 2013-08-08T17:05:47.670 回答