With Android 6 (Marshmallow), Google has introduced Doze mode to the base Android, in an attempt to unify battery saving across the various Android phones.
Unfortunately, vendors (e.g. Xiaomi, Huawei, OnePlus or even Samsung..) did not seem to catch that ball and they all have their own battery savers, usually very poorly written, saving battery only superficially with side effects.
Naturally users blame developers for their apps failing to deliver. But the truth is developers do the maximum they can. Always investigating new device specific hacks to keep their (your!) apps working. But in many cases they simply fall short as vendors have full control over processes on your phone.
This is a legitimate problem on my OnePlus 6T. I enjoy using this phone, but the aggressive non-standard application cycle management definitely leads to issues with not receiving notifications or login procedures being restarted as you leave an application. It doesn’t happen often enough to truly bother me, but I can definitely see how people who make more extensive use of their phone than I do run into this issue every day.
The link seems broken…
Great find! I have been complaining about this since my first Android device in 2013 (I have used all Android versions from 4.1 to 8).
Coming from a Symbian phone (the one with the largest RAM) I was perfectly accustomed to managing open apps the way I wanted rather than the way the OS wanted.
When I started using Android devices I was very disappointed by the fact that many apps would reload without any warning. Most times it was – and is – the browser getting killed and then reopening
– losing all the text you had been writing (it happened too many times, until I learned to select all and copy before switching from the browser to any other app);
– failing to reload pages if the connection was not available anymore, despite their supposedly being in the cache.
Many other apps suffer from this problem. The music player sometimes exits. Many other times it gets killed when I pause it, despite the notification that should help keep it open. The picture album almost always reloads after switching back – of course, if you were looking at an old picture, you’ll have to find it again. Same goes for everything else – maps, messaging apps (Whatsapp sometimes recovers the drafts, some other times it discards them – no clear pattern, so I also learned to copy the message text before leaving if I am not going to send it immediately).
Being a frequent task switcher, the way Android happily kills background apps makes it very cumbersome for me to use my phone without losing part of my work.
Things have not greatly changed so far. BTW I am mainly using Sony devices, which are not the worst offenders in this.
Just for history. Symbian phones would sometimes complain about memory being full and I would close the apps I was not using. The task switcher would display the apps that were actually running rather than the “most recently used”. In this respect the workings were similar (and prior) to MeeGo/Harmattan and BB10.
There was an app menu with folders, home launcher with widgets and app icons and one of the widgets was for most recently used apps.
I can’t wait for Android to stop freaking close my apps.
To be honest, Android app lifecycle is designed so the app shall be prepared to be killed at any moment when it’s not in the front.
Therefore apps are expected be able to serialize their complete state on disk when switched away. It’s hard to do and few do that correctly. Especially the ones with codebases originating in Linux/Windows apps.
That’s one of the reasons putting more and more ram in android handsets is justifiable. It allows to avoid the background killing problem to some extent. But now custom battery saver hacks make even Gigs of RAM that less effective.
On the other hand, if an app decides to run arbitrary commands while in the background and open arbitrary network connections, why it should be allowed to do it uninterrupted on a power-constrained device? How does the OS know it’s a messaging app and not game fetching new “promotions” from an http server?
If app vendors had standardized on a chat protocol that the OS could support natively, they wouldn’t have this problem right now. Facebook is particularly guilty of this, using a power hungry message-fetching service because they can. I have no sympathy for them, and with SMS messages being basically free now, I cannot wait until we get back to SMS for important messages. I have already made it clear to my relatives that if it’s not an SMS message it isn’t time-sensitive.
The os does know what permissions an app has requested, and could make some logical inferences, but this brings me to the real cause of this whole mess: the tragedy of the commons. Battery live is the commons. The more an app has the better it can appear to be for the end user. Most end users don’t know can’t decipher why their phone dies so quickly. They just know they like app X that is always ready to do everything. So every stupid app does stupid things just to appear to be better for the user. I think run in background should be an optional permission. Right now Google is cracking down on the SMS permissions that applications use for various privacy reasons. In the future they could also crack down on apps requesting background permissions.
Also, see chat the new chat/sms standard ( “Universal Profile for Rich Communication Services.”), that might allow google to do what you were mentioning, but I doubt they will. It makes more sense to base it off an application permission specific to the functionality. Also should name and shame the applications on load. Game of Idiots is consuming 20 % of your batter loading permissions, do you want to revoke its background permission?
To me it sounds like what you are describing as the optimal way of managing battery consumption by background apps is how Android already works.
Doze is Android’s way to avoid the tragedy of the commons.
You can manually disable battery optimisation for selected apps that *you* want to have always responsive. But they’ll get killed anyway when Android decides so.
Obtrusive, always-present notifications are required in order for background services to keep running.
Honestly I’m not sure I understand what you’re talking about.
I agree with kurkosdr on SMS. The FB app is hell and I’m happy to disable it on any device I can get my hands on.
I was trying to outlay a better way for kurkosdr’s idea to be implemented. But yea doze should work. I’d just like to see better user notifications about batter use. If you start an app that is really killing your battery, it should notify you when you open it. Or proactively as your battery hits a set percentage, say 20% remaining power, it should launch a notification warning you of the worst offenders for behind the scenes battery drain.
I’ve switch off of android for this and other reasons for my primary phone, but I do still use a secondary device with android as well as supporting loved ones with phone issues. They just don’t understand why the battery dies when it does or what to do about it.
Thank you! Now I better understand your point, and I totally agree with you.
I also understand your switching away from Android. I have grown so dissatisfied with it, as well. But when I look at the only available competitor, I always “switch back”…
I guess you are using iOS now? How do you feel about it? I’m interested in a power user perspective.
I do get notifications when there are background apps that are running that are using power, or when foreground apps are using a lot of power. I have not installed or done anything to get this feature. I thought it was a general Android feature, but i guess it could be a Samsung thing. My phone for sure haven't always had it, got it during an update a while ago. (S7 Edge)
@Troels I haven’t seen that actually work as expected, even on samsung. Have friends that have the LTT samsung battery life bug, so may be the bug doesn’t trigger that warning.
You cannot blame the vendors only, Google itself blundered very badly in this matter with the release of Android 8.0 Oreo. While using 8.0 it is almost impossible to run anything which is *supposed* to run on the backround, like VPNs or security apps; the system keeps killing them regardless of what permissions I give to the apps, Also, most of the notifications are suppressed regardless of the settings. In short, 8.0 effectively killed Android multitasking. Fortunately, most (but not all!) power and memory related bugs were fixed in 8.1, making it more or less usable, but still needing much manual configuration.
Because of the way 8.0 behaves I had to ditch my Nokia 5.1 phone after just two weeks of usage. It had the infamous MediaTek chipsets, meaning that it was stuck with 8.0 Oreo, never getting 8.1 update and 9.0 Pie update probably still months away.
It was very stupid of Google (and the phone vendors!) to blindly focus on the power savings and never thinking how people (well, at least nerds like me…) actually use their phones.
cyberpunkrocker,
I don’t mind reducing synchronize intervals for background apps, something like 30min intervals. However k9 background retrieval ceased to work on my new android 7 phone. No matter what I tried, I could not get k9 mail to retrieve emails in the background on this phone at any polling frequency so long as “battery saver” was enabled. Even if I waited all night, emails never came in. At least battery saver can be set per-application, so I set k9 mail to have “no restrictions” and I haven’t had a problem since. There’s no noticeable loss of battery life, so for all it’s interference it doesn’t look like battery saver was even helping (at least in my case).
I have no idea how much of this is google’s design versus the manufacturer, but I agree this behavior isn’t the best for apps that are designed to work in the background. Perhaps there should be a background quota system to allow innocent apps to run in the background without assuming they’re guilty.
BTW the comments above demonstrate problem with “full multitasking” (the kind of multitasking where apps are allowed to run arbitrary commands and open arbitrary network connections while in the background). Half the people are complaining about Android draining their battery and the other half are complaining about not being able to run security software and whatnot in the background.
There is no easy solution to this. For example, for me Doze allowed me to keep my data connection open, because battery life is paramount and before Android 6.0 I always disabled the data connection before putting the phone in my pocket. So, it has actually increased app “freshness” for me.
BTW allowing for full whitelisting of apps won’t work, because you know Facebook will blackmail their way to such a permission for their messaging app (by making their app refuse to function until it gets the permission) and you know most users will cave in and give it. We are talking about a company that refused to target a newer API version just to avoid using the new fine-grained permissions. If such whitelisting is allowed most people will be back to the Android 2.x days, having their battery drained by the Facebook app without any limit.