Android I/O с файлами ›16MB

Можно ли работать с файлами ввода-вывода размером> = 16 МБ на Android? В настоящее время я использую новый Java NIO-API (FileChanel), разделяю массив с помощью System.arraycopy и помещаю фрагменты в коллекцию. Если размер файлов >= 16 МБ, поток выдает ошибку OutOfMemoryError.

Какие-либо предложения? Обычный I/O-API был очень медленным.

Заранее спасибо.


person chollinger    schedule 13.02.2012    source источник


Ответы (1)


Проблема в том, что приложения Android имеют ограничение в 16 МБ ОЗУ на приложение, поэтому вы получаете исключение нехватки памяти. В настоящее время, если вы хотите поддерживать наиболее распространенные версии Android, вы не можете обойти это ограничение. Вам нужно будет обрабатывать файл по частям.

person Boris Strandjev    schedule 13.02.2012
comment
Кстати, максимальный размер кучи зависит от устройства. - person Jens; 13.02.2012
comment
Истинный. См. здесь: stackoverflow.com/questions/3590443/. Однако 16 Мб — это предел для наиболее распространенных устройств. - person Boris Strandjev; 13.02.2012