私のAndroidアプリケーションでは、64KiBのチャンクで多数のファイルを読み取り、ソケットに書き込みます。ソケットへの書き込みは非同期であり、私はそれを制御できません。また、コールバック関数も提供しません。
大きなファイルを読み取ると、ソケットがまだバイトの解析とネットワーク経由での送信に取り組んでいるため、OOM例外が発生します。
参考までに、コードは次のようになります。
byte[] chunk = new byte[64 * 1024];
int read;
while ((read = fis.read(chunk)) != -1) {
// Async call
socket.write(chunk);
chunk = new byte[64 * 1024];
}
この状況を克服するために私が従うことができるデザインパターンはありますか?
ありがとう