There's been a lot of debate recently over custom skins, stock Android, and the relationship between the two. Stock Android has been the favorite flavor of Android among our readers for quite awhile now.

In Android enthusiast circles, it's practically a given that Google attempting to consolidate the user experience across various Android devices is beneficial to the end user. The community seems to usually be biased towards Google when they implement a feature in stock Android that has already existed in OEM skins.

Take multi-window for example - Samsung has had the feature baked into its ROMs for several iterations of its Galaxy devices.  I don't personally own any flagship Galaxy devices with Samsung's implementation of multi-window, but I'm sure as hell excited for what Android N has to offer in the upcoming future. But will Google's implementation be superior to Samsung's? Our preliminary comparison between the two revealed that Android N's multi-window needs some more polishing before we can claim it's the definitive multi-window implementation. To be fair, though, we're still a few months away from Android N's public release, so we can't say that multi-window in Android N won't eventually be the superior implementation.

But what if Google's official multi-window doesn't stack up to Samsung's multi-window? If it doesn't, then Samsung users will feel disappointed by what's seemingly a downgraded feature. I'm not stating these concerns without any just cause, either, because that's exactly what just happened with Sony's Stamina Mode.


Stamina Mode Runs out of Juice

When Android Marshmallow began rolling out to certain Sony Xperia devices earlier this year, some users noticed that Stamina Mode was missing. Users who were part of Sony's beta program were treated to this message as to why the company removed Stamina Mode in their devices:

The Marshmallow version of Android has its own smart solution for managing power consumption (Doze and App Standby). These functions are integrated directly into Android 6.0, which made Stamina mode redundant. In other words, Stamina mode was removed from M.

It's not difficult to see why Sony removed Stamina Mode in Android Marshmallow here. With the introduction of Doze mode, it's pretty easy to justify to consumers why Sony was going to remove one of its most touted software features - because Google made their own there's no need for Stamina Mode to exist. It's not as if Sony had any choice in the matter, though, since according to the Android Compatibility Definition, the inclusion of Doze mode is a requirement for devices to pass the Google CTS. Without meeting this requirement, devices cannot come pre-installed with Google's Apps, which is practically a death-spell for any device that isn't sold within China.

8.3. Power-Saving Modes

All apps exempted from App Standby and/or Doze mode MUST be made visible to the end user. Further, the triggering, maintenance, wakeup algorithms and the use of Global system settings of these power-saving modes MUST not deviate from the Android Open Source Project.

But let's return to Sony's stated reasoning for why they ditched Stamina Mode. They stated that Stamina Mode was made redundant by Doze mode and App Standby in Android 6.0, which is a rather odd statement to make considering it is patently false. Sony's Stamina Mode was not made redundant by Android 6.0's battery saving features. Rather, Android Marshmallow's Doze Mode marks a battery life regression for Sony devices. In fact, Sony's Stamina Mode, which has existed since Android Lollipop, is more on par with Android N's Doze Mode implementation.


Battery Life Wars

So what's so great about Sony's Stamina Mode? According to Sony, the feature would save a ton of standby battery life by restricting unnecessary background services. They present us with some neat graphs showing just how much battery life can be saved.

Look familiar? Oh wait...

doze mode
Android M Doze Mode

I'm not a major fan of these generic PR images showing you just how great Doze Mode and Stamina Mode are. While the battery life gains from both features can be quite substantial, the difference in how both features are implemented is a major contributor to how effective the feature will really be for you. So let's dive into a bit of the nitty-gritty to compare Android 6.0's Doze Mode and Sony's Stamina Mode.

Stamina Mode

Stamina Mode works like this: one minute after you turn off your screen, the system blocks all data traffic and prevents all background activities from waking up the system. When you turn on the screen, however, all activities will be resumed. The system does not disable network access, though, so when you turn on your phone's screen you will very quickly receive any pending notifications. Critical activities such as phone calls, text messages, calendar notifications, or alarms will still fire off as usual (so long as they use Android's standard AlarmManager class to schedule an alarm service.

But what if you have important apps that you always want to receive notifications for no matter what? For these situations, you can whitelist the app in Stamina Mode so they won't be restricted by the system. Otherwise, if Stamina Mode doesn't interest you, you can just choose not to enable the feature.

stamina2
White-Listing Apps in Stamina Mode

How does this compare to Doze Mode, though? I will revisit a previous article of mine that explored Doze Mode in depth to offer a brief explanation:

After the screen is off, the device is running off of its battery, AND the device has been stationary for some time, the device will enter doze mode. When the device enters doze mode, all apps that have not been whitelisted by the user in the battery optimization setting will have the following deferred: network access, wake locks, standard AlarmManager alarms (not to be confused with actual alarms designed to wake you up), WiFi scans, or sync adapters. These actions are deferred until the next maintenance window, whereby the system wakes the device up and allows all of these actions to run for a brief period at the same time (ie. coalesces them).

Sounds pretty similar to Sony's Stamina Mode, no? However, there are several major distinctions to consider here.

  1. Doze mode requires your phone to be geographically stationary (ie. sitting on a desk and not in your pocket).
  2. Doze mode can only be interrupted by high priority GCM messages. Your favorite app's developer didn't set a notification as high priority? Too bad, you have to wait until the next maintanence window to be notified.
  3. Doze mode's white-list does not truly exempt an app from all restrictions.
  4. Doze mode cannot be disabled. Having issues with notifications on Android 6.0? Too bad.

Stamina Mode was a pretty stellar feature in its day, and there was even a moderately successful attempt at porting it to all devices. Stamina Mode could be adjusted to be more or less conservative based on what apps you white-listed, whereas Doze mode was so hit and miss as to when it would trigger that modders had to resort to editing how it fundamentally worked just to get doze mode to actually do its job.


Stamina Mode Returns...or Does It?

About a month back, users were reporting that Stamina Mode was making its return in a beta Marshmallow update for certain handsets. Several blogs quickly picked up on the news, and rejoiced that the feature was finally coming back. Some astute users immediately noticed that Stamina Mode was quite heavily gimped in its return, however.

These are a couple of screenshots taken via Reddit that show the new Stamina Mode in action. It is, in essence, just a slightly beefed up version of Battery Saver mode that has existed since Android Lollipop, not the Doze Mode competitor that Xperia fans had come to love. By forcing OEMs to implement an unmodified version of Doze Mode in their Marshmallow updates, Google has essentially forced Sony to fundamentally change how Stamina Mode works. And by doing so, they've cut out a pretty great battery saving feature in favor of a rather mediocre one. Users who own a Sony Xperia device will have to wait until Android N for the improved Doze Mode implementation to regain the stellar battery life that was afforded by Stamina Mode. In my opinion, Android N's Doze mode is superior to Sony's Stamina Mode, however, Android M's Doze mode is one step backward for Sony.

Unfortunately, the wait for Android N to come to Sony Xperia devices may be quite long. Android N itself is still in the beta testing phase for Google Nexus users, after all. We won't see a final build of Android N (as well as the full source code drop) until sometime in the third quarter.

n-preview-updates_2x

Judging by how long it took for Android Marshmallow to make its way to Sony's flagship Xperia Z5 device (4 months), should we expect Android N in March 2017? Maybe, maybe not, as Sony seems to be ahead of the pack when it comes to testing out Android N on its devices. But what about all of those Sony devices that will no longer be updated past Android Marshmallow? Tough luck for you guys. In Google's quest to unify the fragmented landscape that used to be the competing OEM skins, some of you fell on the wrong side of the sword.