Способ обойти ограничение размера файла 1 МБ? - PullRequest
1 голос
/ 26 марта 2010

Мое приложение должно сохранять файлы размером от 2 до 20 Мб. Когда я пытался сделать это, я получал исключение OutOfMemoryException. Я немного читал, и похоже, что Android имеет ограничение размера файла 1 МБ. Это правильно? Если да, есть ли способ обойти это ограничение, кроме разделения каждого файла на куски по 1 Мб?

Ответы [ 2 ]

5 голосов
/ 26 марта 2010

Основное приложение должно быть небольшого размера, например <1 МБ, но вы можете сохранять столько файлов, сколько хотите, и столько, сколько хотите, до тех пор, пока сохраняете их на карте памяти. Доступное пространство, которое можно использовать для приложений (и других защищенных данных), ограничено, обычно менее 128 МБ. Таким образом, в основном вам нужно держать ваше приложение небольшим и помещать большую часть в виде надстройки или дополнительных файлов, которые можно поместить на карту памяти. Если ваше приложение будет использовать 20 МБ из доступного пространства, это резко сократит количество людей, которые будут его использовать. </p>

2 голосов
/ 26 марта 2010

OutOfMemoryError означает, что вы превысили бюджет ОЗУ виртуальной машины, который составляет 16 или 24 МБ, в зависимости от того, на каком устройстве вы находитесь. Это не имеет ничего общего с размерами файлов.

Максимальный размер сжатого ресурса в файле APK, который вы, вероятно, имеете в виду, составляет 1 МБ.

Файлы в области личных данных вашего приложения или на внешнем хранилище могут быть настолько большими, насколько позволяет файловая система. (Я слышал, что реализация FAT32, которую Android использует для SD-карт, имеет ограничение в 2 ГБ для отдельных файлов, но не помню разрешение этого потока.) Доступное дисковое пространство, скорее всего, будет более важным.

Возвращаясь к исходной проблеме, проверьте выходные данные logcat (через adb logcat или DDMS), чтобы увидеть, есть ли какие-либо сообщения от сборщика мусора непосредственно перед запуском OOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...