在我的Android应用中,我需要从XML API下载某些文件的元数据。 我正在使用RetroFit来处理我作为异步实现的请求,在Callback中我解析XML并在文件中保存我需要的数据。
当我需要获取许多文件的信息时,我得到OutOfMemoryError
并使用MAT分析堆,我发现之前响应的XML主体仍然存在。有没有办法强制应用程序刷新已经使用的XML?
答案 0 :(得分:3)
我想我找到了一个解决方案:
默认情况下,OkHttpClient
使用HttpResponseCache
的内存缓存实现,切换到磁盘实现我能够运行10000个请求而不会出现任何OutOfMemory
错误。
我查看了this示例并编辑了以下行以使用Android内部存储:
File cacheDir = new File(System.getProperty("java.io.tmpdir"), "okhttp-cache");
cache = new HttpResponseCache(cacheDir, 10L * 1024 * 1024);
okHttpClient = new OkHttpClient();
okHttpClient.setResponseCache(cache);