1

I have a Motorola phone, with 8GB of internal memory.

To my surprise, in a few days, I had 474MB of free space, but couldn't install a 338KB app!! So, clearly the limit of ~25MB referred to in some comments (here and here) are not always the case. A user just told me the following:

Actually it's "25MB or 10% of the storage", whichever is hit first. So with e.g. 10 GB internal storage, it would hit you as soon as you drop below 1 GB free. Crazy, but that's what it is.

Actually, that's not correct, because I didn't have to free up 1GB of internal memory. But anyway, half a gigabyte is enough to run a full operational system. I've seen similar complaints of hundreds of MB not enough to install apps ~ 1MB or similar small operations (here and here).

What's wrong here?

  • I hate how there are some people who always want to protect the image of the powerful ones, no matter how bad it is. Could you please stop being so subservient? – Rodrigo Jul 7 '16 at 23:04
  • All of the whining you seem to insist on shoveling onto the site is completely irrelevant noise. There are umpteen million places on the internet that you can go to complain about your personal peeves. This is not one of those places. We don't care about how you perceive that someone (or some company) has personally offended you, we just want the information that's relevant for answering your question. – eldarerathis Jul 8 '16 at 3:55
  • ok mister bad-service defender. – Rodrigo Jul 8 '16 at 5:46
5

Note: the quoted user was me. And here is the reference. To explain why it wasn't 10% in your case, here's an exception from behind the link: "As long as the device maker doesn't change the default settings". So those 10% are the default setting, but obviously can be altered by the "ROM baker". How often that is done I cannot tell; with that post being from 2011, the rule might even have changed meanwhile (though I didn't hear of that either).

So I just applied a little "Google-Fu": Android 4.1.1 still has the comment

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."

(emphasis mine). Note the term "tunable threshold", which makes it obvious this threshold can be modified/adjusted. For Android 4.1.1 you can find it at line 67:

private static final int DEFAULT_THRESHOLD_PERCENTAGE = 10;

This is a class variable; but not being an Android dev myself, I cannot tell how it can be overwritten. It certainly will require system permissions (or just an app with the WRITE_SECURE_SETTINGS permission?). Quoting the latest code:

 * 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.

You can see, the 10% rule is still there. But the DEFAULT_THRESHOLD_PERCENTAGE variable is gone (and replaced by mMemLowThreshold, which seems to be set in a different class now – see line 361).


TL;DR: The very same 10% threshold still applies, but the "ROM baker" (who creates the ROM) might adjust that. A developer with some more insight might be able to tell if it can be adjusted by other means, e.g. a special app with the WRITE_SECURE_SETTINGS permission, or even simply via ADB.

  • Seems you entirely miss the point here: the problem is not that I was getting a message of low memory, but that I COULDN'T INSTALL an absurdly small app. – Rodrigo Jul 7 '16 at 23:07
  • I once played a flight simulator by Silicon Graphics that fitted in a 1.44MB floppy disk. Just to give an idea of how LARGE 474MB are. If this is not an example of planned obsolescence, I don't know what it is. – Rodrigo Jul 7 '16 at 23:08
  • You couldn't install that because the system decided you're running low on storage – which was why it sent you that message. Even if the APK would have been 1k, No is No. Remaining space is preserved to ensure the system won't completely run out of storage with its "daily business". A new check is performed usually twice a day or if available storage changed by at least 2 MB, if I remember the code right. So sorry, it's not me missing the point here. I'm aware this might sound unsatisfying – but you wanted the reasons, and I gave them (even pointing to a possible way out). – Izzy Jul 8 '16 at 6:30
  • They could have displayed a message: "Installing this app may make your system slow, and even some operations and updates unavailable. Are you sure you want to continue? PS you will have the option to uninstall it later, returning the system to full operation." Or perhaps 474MB are necessary just to uninstall any app? Or maybe that message would be too complex for the usual "Homer Simpson" user? (But if the threshold can be changed by the user, so it's not THAT complex. Why not include a link for it with the message?) Or maybe it's just "soft planned obsolescence", who doesn't do it nowadays? – Rodrigo Jul 8 '16 at 9:09
  • "Or maybe that message would be too complex for the usual "Homer Simpson" user?" Maybe they wanted to keep it simple, yeah. "But if the threshold can be changed by the user" Who said so? If that's the case, someone forgot to point out where and how :) As I wrote, according to the comments in the code (which no "average user" ever reads) there seems to be a possibility. Though I've never read how that could be approached by a user. And sorry, all the "why's" I don't know an answer for. Would have loved offering you a clearer "fix". – Izzy Jul 8 '16 at 9:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.