Ich habe ein Motorola-Telefon mit 8 GB internem Speicher.
Zu meiner Überraschung hatte ich in ein paar Tagen 474 MB freien Speicherplatz, konnte aber keine 338-KB-App installieren!! Die in einigen Kommentaren ( hier und hier ) genannte Grenze von ~ 25 MB ist also eindeutig nicht immer der Fall. Ein User hat mir gerade folgendes gesagt:
Eigentlich sind es "25 MB oder 10 % des Speichers", je nachdem, was zuerst getroffen wird. Bei zB 10 GB internem Speicher würde es Sie also treffen, sobald Sie unter 1 GB frei fallen. Verrückt, aber so ist es.
Eigentlich ist das nicht korrekt, weil ich nicht 1 GB internen Speicher freigeben musste. Aber wie auch immer, ein halbes Gigabyte reicht aus, um ein voll funktionsfähiges System zu betreiben. Ich habe ähnliche Beschwerden über Hunderte von MB gesehen, die nicht ausreichen, um Apps zu installieren ~ 1 MB oder ähnliche kleine Operationen ( hier und hier ).
Was ist hier falsch?
Hinweis: Der zitierte Benutzer war ich. Und hier ist die Referenz . Um zu erklären, warum es in Ihrem Fall nicht 10% waren, hier eine Ausnahme hinter dem Link: "Solange der Gerätehersteller die Standardeinstellungen nicht ändert". Diese 10% sind also die Standardeinstellung, können aber offensichtlich vom "ROM-Bäcker" geändert werden. Wie oft das gemacht wird, kann ich nicht sagen; Da dieser Beitrag aus dem Jahr 2011 stammt, könnte sich die Regel inzwischen sogar geändert haben (obwohl ich davon auch nichts gehört habe).
Also habe ich mal ein bisschen "Google-Fu" angewendet: Android 4.1.1 hat noch den Kommentar
Wenn der freie Speicherplatz auf dem Gerät kleiner als ein einstellbarer Schwellenwert ist (ein sicherer Einstellungsparameter; Standard 10 %), wird eine Benachrichtigung über wenig Speicherplatz angezeigt, um den Benutzer zu warnen."
(Hervorhebung von mir). Beachten Sie den Begriff "abstimmbarer Schwellenwert", der deutlich macht, dass dieser Schwellenwert modifiziert/eingestellt werden kann. Für Android 4.1.1 finden Sie es in Zeile 67:
private static final int DEFAULT_THRESHOLD_PERCENTAGE = 10;
Dies ist eine Klassenvariable; Da ich selbst kein Android-Entwickler bin, kann ich nicht sagen, wie es überschrieben werden kann. Es erfordert sicherlich Systemberechtigungen (oder nur eine App mit der WRITE_SECURE_SETTINGS
Berechtigung? ). Zitat des neusten Codes :
* 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.
Sie sehen, die 10%-Regel gilt immer noch. Aber die DEFAULT_THRESHOLD_PERCENTAGE
Variable ist weg (und ersetzt durch mMemLowThreshold
, die jetzt in einer anderen Klasse gesetzt zu sein scheint – siehe Zeile 361 ).
TL;DR: Es gilt immer noch die gleiche 10%-Schwelle, aber der "ROM-Bäcker" (der das ROM erstellt) könnte das anpassen. Ein Entwickler mit etwas mehr Einblick kann möglicherweise feststellen, ob es auf andere Weise angepasst werden kann, z. B. eine spezielle App mit der WRITE_SECURE_SETTINGS
Berechtigung , oder sogar einfach über ADB.
Rodrigo
Eldarerathis
Rodrigo