在我的 Android 应用程序中,我需要从 XML API 下载一些文件的元数据。我正在使用 RetroFit 来处理我作为异步请求实现的请求,在回调中我解析 XML 并将我需要的数据保存在文件中。
当我需要获取许多文件的信息时,我OutOfMemoryError
使用 MAT 获取并分析堆,我发现以前响应的 XML 正文仍然存在。有没有办法强制应用程序刷新已经使用的 XML?
我想我找到了解决方案:
默认情况下,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);