Battery life is a completely subjective measure. I might get 24 hours of usage on a device while someone else experiences 16 hours. I might call that average battery life whilst the other person could consider that good battery life. The measure depends on usage and how your usage is specifically handled by the device in question.
As I have personally used many devices this year, with broadly similar usage for each, it has become apparent that not all devices are equal in ways that I had never imagined. For instance, I generally don't demand more than around 3 hours of screen time each day and so radio performance becomes more critical for me. Some devices such as the HTC One have fantastic radio performance leading to wonderfully low idle drain giving me a good battery experience but its screen is fairly power hungry. The LG G2 on the other hand would give me far more screen time when I demanded it but had worse idle drain. The picture is extremely complex and unique to the individual.
One aspect of battery life that is far more objective though is when you experience unusually high battery drain in all scenarios, something that Android has been especially guilty of in the past. These days, the operating system and most mainstream apps are well enough optimised that this is not an issue, but in testing the Motorola Moto X, I came across this sort of terrible unexplained drain once more. I have spent close to 5 days debugging this issue and whilst the outcome of that process is not important here, it is useful to discuss some of the tools available and their relative merits.
The first step in this situation should be to look at the built in Android battery settings which give an excellent overview of what is using your battery. You can examine how long your screen has been active as well as how much battery is being used by some of your apps. It is also possible to see a battery graph showing how power has discharged over time. The graph also provides information on your signal quality - a major component of battery drain - and how long the device has been awake, though not necessarily with the screen on. It is this last piece of information that can prove most useful, if your device is awake a lot of the time without your screen being on, something is happening in the background.
What the built in tools cannot show you however, is what the Android OS itself is doing to your battery. All the services that make up the operating system are grouped into one item called "Android OS" and it is very hard to be sure which services make up this wide ranging category. It is also the case that this grouping will be different depending on which device is in use. This makes it very hard to be sure of what is actually happening with your battery when you experience unexplained battery drain.
Thankfully, the Android community is full of extremely clever and resourceful developers that have created a number of tools. BetterBatteryStats is one popular app, available in the Play Store, that can help you dive into which specific services are causing the dreaded wake locks as they are known. With Android 4.3 or later, App Opps Starter, also in the Play Store, can help you control the individual permissions that apps and services, including some built-in services, have been given allowing for a very granular look at what might be causing unexplained battery drain.
With these tools, it is possible to explain the unexplained, but it is a long and arduous process. To be sure that changes you have made are having the desired effect, it is necessary to leave the device for a number of hours in order to gather enough statistics to make a meaningful judgement. Frankly, it is extremely painful, but also quite rare these days to have to go through these arduous and complex processes in order to weed out badly behaving apps.
Many of you reading this will be thinking that at least we have such tools so that issues can be ironed out. And you are all right. On the iPhone for instance, Apple does not provide any tools for looking at what might be using your battery, so if there is an issue, almost nothing can be done without visiting an Apple store.
I still believe that Google can do better here. If you are going to build an operating system to run in a highly battery constrained environment and allow services to run in the background then you have a duty to help users when these services start misbehaving. Google did exactly that when they introduced the battery stats discussed before, but I think they should do more. A simple step would be to expose which services are causing the phone to remain awake with the screen off. An even simpler change might be to break down the Android OS entry in the battery stats in its granular components.
So what do you think? What advice can you give and have I missed any good tools that would have helped me in my recent battery debugging mission?