【发布时间】:2014-07-31 03:56:46
【问题描述】:
我正在使用 Volley 库下载某些项目的元数据,这些元数据以 XML 格式返回。 对于合理数量的项目,一切都按预期工作,但是当它们太多时 - 大约 7000 - 应用程序耗尽可用内存并且我收到此错误(被 ACRA 库捕获):
03-21 11:08:31.362: E/ACRA(16922): java.lang.OutOfMemoryError
03-21 11:08:31.362: E/ACRA(16922): at java.lang.String.<init>(String.java:255)
03-21 11:08:31.362: E/ACRA(16922): at java.lang.String.<init>(String.java:228)
03-21 11:08:31.362: E/ACRA(16922): at com.android.volley.toolbox.StringRequest.parseNetworkResponse(StringRequest.java:67)
03-21 11:08:31.362: E/ACRA(16922): at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:121)
我还收到 Choreographer 消息,抱怨丢帧。
我正在使用 volley 来实现通用 StringRequests,并且所有请求都由唯一的 RequestQueue 处理。
使用 Eclipse MAT 我发现大部分堆都被MessageQueue 占用,其中仍然存储着旧的 XML。如果我必须执行大量(数千个)请求,这当然会使应用程序崩溃。
如何清空消息队列?
【问题讨论】:
标签: android message-queue android-volley