Существует ли максимальный размер внутренней памяти Android для приложения? - PullRequest
37 голосов
/ 08 февраля 2012

Я хочу сохранить файл json со всеми данными приложения (что-то похожее на предпочтения), но я не уверен, каков предельный размер, потому что, если приложение не может использовать этот файл, оно, вероятно, не будет работать. Эта информация известна заранее, и операционная система резервирует некоторое пространство для вашего приложения или в зависимости от доступного размера.

Обновление: Меня не особо волнует внешнее хранилище, так как оно не всегда доступно в устройстве и может быть изменено (SD-карта), и я могу проверить внутреннее хранилище, используя это , но это не то, что я хочу знать, что я Хотите узнать, есть ли объем памяти, выделенный для внутренней памяти устройства?

Ответы [ 4 ]

41 голосов
/ 08 февраля 2012

Если вы используете Environment.getExternalStorageDirectory() (или Context.getExternalFilesDir() для API уровня 8 и выше) в качестве места для вашего файла JSON, то я считаю, что размер будет ограничендоступное пространство во внешнем хранилище (обычно SD-карта).Я полагаю, что для большинства устройств в Android нет встроенных фиксированных ограничений на внешнее хранение файлов.(Внутреннее хранилище - это другое дело. Производители устройств могут наложить довольно ограничительные ограничения, возможно, до 100 МБ, общие для всех приложений.)

ОБНОВЛЕНИЕ: Обратите внимание, что согласно определению совместимости для Android 2.3 (Раздел 7.6.1), устройства должны иметь немного памяти:

Реализации устройств ДОЛЖНЫ иметь как минимум 150 МБ энергонезависимой памяти, доступной для пользовательских данных.Таким образом, раздел / data ДОЛЖЕН иметь размер не менее 150 МБ.

Помимо вышеуказанных требований, реализации устройств ДОЛЖНЫ иметь как минимум 1 ГБ энергонезависимой памяти, доступной для пользовательских данных.Обратите внимание, что это более высокое требование планируется стать жестким минимумом в будущей версии Android.Реализациям устройств настоятельно рекомендуется соответствовать этим требованиям сейчас, иначе они могут не подходить для совместимости с будущими версиями Android.

Это пространство совместно используется всеми приложениями, поэтому оно может заполняться.Не существует гарантированного минимального хранилища для каждого приложения.(Такой гарантированный минимум будет бесполезен для приложений, которые должны хранить больше минимума, и будет тратить впустую на приложения, которые хранят меньше.)

Редактировать : из совместимости определение для Android 4.0

Реализации устройств ДОЛЖНЫ иметь как минимум 350 МБ энергонезависимой памяти, доступной для пользовательских данных.То есть раздел / data ДОЛЖЕН иметь размер не менее 350 МБ.

Из определения совместимости для Android 4.3

Реализации устройств ДОЛЖНЫ иметь как минимум512 МБ энергонезависимой памяти, доступной для пользовательских данных.То есть раздел / data ДОЛЖЕН иметь размер не менее 512 МБ.

Интересно, что рекомендации, которые ДОЛЖНЫ обеспечить реализации по крайней мере 1 ГБ, остались прежними.

17 голосов
/ 08 февраля 2012

Я никогда не был свидетелем того, как это ограничивало одно приложение, и я проверил его, сохранив несколько довольно больших (200 МБ) видеофайлов в приложении Files dir.

Для внутреннего хранилища я думаю, что только выограничено объемом внутренней памяти, доступной для всех приложений для совместного использования.Что, как упоминал @Ted Hopp, довольно мало на некоторых старых и младших устройствах.Но на более новых и более поздних устройствах они начали увеличивать его до разумного уровня, хотя, даже если устройство имеет много места, оно все равно может быть занято другими приложениями (так что вам нужно проверить, что произойдет вэтот сценарий).

Также стоит отметить, что если вы используете внешнее хранилище, такое как SD-карта, то ваш файл json будет технически редактируемым пользователем.Они могут открыть его в текстовом редакторе и начать изменять необработанные значения, если они захотят.(Это также возможно, если вы решите использовать внутреннее хранилище, но для этого потребуется рутированное устройство, в то время как для хранения на SD-карте не потребуется рут)

Так что если вы храните информацию, которую вы 'Если пользователь не имеет возможности редактировать вручную, вы можете принять это во внимание.

1 голос
/ 21 октября 2018

В приложении / sdcard / Android / data / определенно есть ограничение в 3,5 ГБ для каждого приложения, по крайней мере на некоторых устройствах. Это также относится к изображениям, предоставленным Google для официального эмулятора Android. Я заметил это, когда неоднократно получал ошибки «нехватка места на диске» в определенном приложении для Android, созданном с Unity, который загружает много изображений, видео и аудио данных. Каждый раз это происходило, когда папка в вышеупомянутом месте увеличивалась до 3,5 ГБ. Никакое количество свободного пространства не исправит это. Однако, по-видимому, документации об этом поведении нет.

1 голос
/ 16 августа 2018

Я думаю, что жесткий предел составляет около 3,61 ГБ.

В настоящее время на моей вкладке установлен термин terux.Termux запускает терминал linux, где я могу установить nodejs и npm.Тем самым по сути создаётся среда разработки.Я установил пакеты без особых проблем с пространством, за исключением случаев, когда внутренняя память моего устройства очень мала.Но по состоянию на последнее.Я думаю, что достиг этого предела, что привело меня к этому вопросу и затронуло эту страницу.

Объем моего устройства хранения превышает 1 ГБ, и я использовал его с пространством до 200 МБ без этой проблемы.Но моя установка termux выросла до 3.61GB.Я недавно начал с пряжи, и кажется, что пряжа - это космическая свинья.Я устанавливал пакет, и он внезапно записал в журнал: error Could not write file "/data/data/com.termux/files/home/dev/ide/theia/yarn-error.log": "ENOSPC: no space left on device Так что он сломал установку и подумал, что мне действительно не хватило места, но я этого не сделал.Дальнейшая проверка показывает, что у меня все еще есть вышеупомянутое пространство во внутренней памяти, и пряжа занимает 750 МБ, из которых npm только около 500 МБ в кэше.С тех пор я использую npm, но мне просто нужно было использовать пряжу, так как установка для Theia с npm не заканчивалась хорошо.Тея, кажется, использует пряжу в качестве менеджера пакетов.Таким образом, 3.61GB намекает на жесткое ограничение для app + data.

Удаление некоторых пакетов и уменьшение пространства, используемого другими избыточными пакетами, я получаю место для создания файлов и установки, как мне нравится, но как только ядостигните 3.61GB снова !!!бум !!!вот и все, я больше не могу создавать файлы.

Я не думаю, что это хорошо документировано, но это происходит.

Я использую леденец (android 5.1)

Чтобы утверждать это, кто-то другой должен попытаться использовать приложение, которое создает действительно большие файлы во внутренней песочнице.Не во внутреннем хранилище, а в частной области данных.Я уверен, что вы, вероятно, достигнете этого жесткого предела.

...