0

私の Android アプリでは、いくつかのファイルのメタデータを XML API からダウンロードする必要があります。RetroFit を使用して、非同期リクエストとして実装したリクエストを処理しています。Callback で 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 に答える