Я пытаюсь загрузить большой файл ~ 10 МБ на сервер и понял, что в 2.3.4 поток записывается в память раньше записывая на сервер, я подтверждаю это поведение, просматривая Дамп памяти кучи, из-за этого для большого файла он вызывает исключение OutOfMemory. Я не вижу такого же поведения на устройстве 4.2.Android HttpsURLConnection на 2.3.4 OutOfMemoryError при загрузке большого файла (байт [] в памяти)
Ниже приводится код, я использую:
URL url = new URL(uri);
connection = (HttpsURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("PUT");
connection.setRequestProperty("content-type", "");
connection.setRequestProperty("Accept-Encoding", "");
connection.setFixedLengthStreamingMode((int)totalBytes);
out = new BufferedOutputStream(connection.getOutputStream());
fis = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[32 * 1024];
int bytesRead = 0;
int totalBytesRead = 0;
while ((bytesRead = fis.read(buffer)) != -1)
{
totalBytesRead = totalBytesRead + bytesRead;
out.write(buffer, 0, bytesRead);// OOM Error
}
out.flush();