У меня телефон Моторола с 8 Гб встроенной памяти.
К моему удивлению, через несколько дней у меня было 474 МБ свободного места, но я не мог установить приложение размером 338 КБ! Таким образом, очевидно, что ограничение в ~25 МБ, упомянутое в некоторых комментариях ( здесь и здесь ), не всегда имеет место. Пользователь только что сказал мне следующее:
На самом деле это «25 МБ или 10% хранилища», в зависимости от того, что будет поражено раньше. Таким образом, например, с 10 ГБ встроенной памяти вы почувствуете себя, как только у вас останется меньше 1 ГБ свободного места. Сумасшествие, но это то, что есть.
На самом деле, это неправильно, потому что мне не нужно было освобождать 1 ГБ внутренней памяти. Но в любом случае полгигабайта достаточно для полноценной работы операционной системы. Я видел подобные жалобы на то, что сотен МБ недостаточно для установки приложений ~ 1 МБ или подобных мелких операций ( здесь и здесь ).
Что здесь не так?
Примечание: цитируемым пользователем был я. А вот и ссылка . Чтобы объяснить, почему в вашем случае не было 10%, вот исключение из-за ссылки: «Пока производитель устройства не изменит настройки по умолчанию». Таким образом, эти 10% являются настройкой по умолчанию, но, очевидно, могут быть изменены «пекарем ПЗУ». Как часто это делается, я не могу сказать; поскольку этот пост был из 2011 года, правило могло даже измениться за это время (хотя я об этом тоже не слышал).
Поэтому я просто применил немного «гугл-фу»: в Android 4.1.1 все еще есть комментарий
Если свободное хранилище на устройстве меньше настраиваемого порогового значения (параметр настроек безопасности; по умолчанию 10%), отображается уведомление о нехватке памяти, чтобы предупредить пользователя».
(выделено мной). Обратите внимание на термин «настраиваемый порог», который делает очевидным, что этот порог можно изменить/отрегулировать. Для Android 4.1.1 вы можете найти его в строке 67:
private static final int DEFAULT_THRESHOLD_PERCENTAGE = 10;
Это переменная класса; но, не будучи разработчиком Android, я не могу сказать, как его можно перезаписать. Это, безусловно, потребует системных разрешений (или просто приложения с WRITE_SECURE_SETTINGS
разрешением? ). Цитирование последнего кода :
* This class implements a service to monitor the amount of disk
* storage space on the device. If the free storage on device is less
* than a tunable threshold value (a secure settings parameter;
* default 10%) a low memory notification is displayed to alert the
* user. If the user clicks on the low memory notification the
* Application Manager application gets launched to let the user free
* storage space.
Как видите, правило 10% все еще существует. Но DEFAULT_THRESHOLD_PERCENTAGE
переменная исчезла (и заменена на mMemLowThreshold
, которая, похоже, теперь установлена в другом классе — см. строку 361 ).
TL;DR: все тот же порог в 10% все еще применяется, но «пекарь ПЗУ» (который создает ПЗУ) может его скорректировать. Разработчик с более глубоким пониманием может сказать, можно ли его настроить другими способами, например, специальным приложением с разрешением WRITE_SECURE_SETTINGS
или даже просто через ADB.
Родриго
эльдарератис
Родриго