我正在使用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消息抱怨丢帧。
我使用齐射来制作公共StringRequest
,并且所有请求都由唯一的RequestQueue
处理。
使用Eclipse MAT我发现大多数堆都被MessageQueue
占用,但仍然存储了旧的XML。如果我要执行大量(数千)请求,这当然会导致应用程序崩溃。
如何清空MessageQueue?