0

在我的 Android 应用程序中,我需要从 XML API 下载一些文件的元数据。我正在使用 RetroFit 来处理我作为异步请求实现的请求,在回调中我解析 XML 并将我需要的数据保存在文件中。

当我需要获取许多文件的信息时,我OutOfMemoryError使用 MAT 获取并分析堆,我发现以前响应的 XML 正文仍然存在。有没有办法强制应用程序刷新已经使用的 XML?

4

1 回答 1

3

我想我找到了解决方案:

默认情况下,OkHttpClient使用内存缓存实现HttpResponseCache,切换到磁盘实现我能够运行 10000 个请求而不会出现任何OutOfMemory错误。

我查看了这个示例并编辑了以下几行以使用 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);
于 2014-07-24T15:37:14.320 回答