This guide should work for any Android phone running any ROM. (Though you do have to be rooted for most of these options. Nothing is THAT simple!)
The goal is to reduce your battery drain when your phone is idle. Nothing in this guide will improve your battery life when the phone is in use. But it will keep the battery from draining quickly (actually it will nearly keep it from draining at all) when the screen it off and the phone is not in use. And the battery savings can be extreme! As I write this guide my phone it has been 4 days, 15 hours, and 9 minutes since I last unplugged my Galaxy S4. I have 33% battery life remaining. You can have this too!
These fixes are not your typical "Lower screen brightness and delete carreir bloatware and disable auto syncing" tips. (Though all that stuff is still a good idea)
You can try all of these techniques or just some of them. Some of them will break features of your phone and might not be good options for you. Only you can decide if these fixes are right for you.
Special thanks for Mike216 and Penko956 for the endless research they did Greenifying, freezing, and disabling they did on just about every system and app on thier phone to see what all could be disabled. And to Torbitege who initially helped figure all this out with me for the HTC Sensation.
First off, what's using your battery?
If you're not already familiar with Better Battery Stats, fix that about yourself. Download it. Use it. Love it.
This app will run in the background constantly monitoring what's using your system resources 24 hours a day. It will tell you what apps are causing wakelocks, which are waking the device, etc etc etc.
The app won't do anything to help your battery life. But it will give you the information you need to adjust problematic apps.
Wakelocks and Battery Drain caused by Google Services
The battery saving impact is major.
This is my personal favorite battery saving technique. But it's not right for everyone, so read thoroughly.
Basically Google thinks your phone belongs to Google. Google Services runs A LOT even when you're not using the phone. This causes a ton of wakelocks and wake ups that use battery. I hate that. So I stopped it with a simple mod to the Google Services Framework.
This is a good old fashioned dirty fix, as it breaks some things. Most push notifications WILL NOT WORK AFTER DOING THIS!!!!! So this is not for everyone!!!! You've been warned. Please don't complain later in the thread that you aren't getting new mail or Twitter or whatever notifications after doing this. You're being told up front they will probably not work.
GTalk and GoogleNow (and maybe a few other things) will not work after doing this. Push notifications for any Google apps will also not work. They are casualties of the dirty fix. But if you're like me and never use GTalk or GNow this will help. Some other Google services might not work after this either. But if you're like me and the only Google service you use is the Play Store app, this will not affect you adversely. (Gmail and Google Maps run independantly of the Google Services framework and are not affected at all by this.)
Use this version of the fix for older Google Service Framework installs. You will know if you have a newer version if doing this install doesnt' prevent your wifi and data icons from turning blue (or whatever color your theme uses). If they turn blue, use the newer version below....
You need to download System Tuner from Google Play. The app will tell you to get Android Tuner instead. Don't do it. It doesn't have what you need. The icon is a blue suitcase with tools on it. Thats' the one you want.
First I froze GTalk and Gnow (Google Search). And no, you can't just freeze those two apps without touching the GSF. The GSF will still create wakelocks when trying to activate them even if they are not there. So you have to modify the GSF as well.
Go to System Tuner and select "Start Ups".
Then pick the Google Services Framework from the list and open it. You shoudl see a list of services.
Uncheck the things on the list below. (Basicall anything with GTalk or Checkin in the title)
You can freeze the GSF entirely with 1 easy step and that will also kill the wakelocks. But the Play Store becomes another casualty if you do that. Disabling the events above will stop the Google Services wakelocks dead in their tracks, and allow the Play Store to continue working. If you want to go that route you can do it but you'd have to unfreeze the GSF everytime you wanted to update an app.
Newer version if you have updated Google Service Framework.
Freeze the Google Services Framework entirely.
Note: I haven't personally tried this and can't attest to it's viability to drawbacks. It was suggested by other members in this thread and confirmed to be working by several other people. Your miliage may vary.
One little quirk with both of the above versions is that when you turn on wifi or mobile data, the signal bars don't turn colors. They stay gray because you aren't connecting to the google servers anymore. (They normally change color to indicate that you are connected to the Google servers). After 1 day I stopped noticing they didn't change colors. Now it looks weird to me when I see them colored.
I highly recommend making a Nandroid backup before trying any of this. Once you go that, go nuts! You can't hurt too much when messing with the GSF because it will just shut down google elements. Worst case, you can always just reactivate everything, reboot, and it'll all work like it did before you messed with it. But if you accidentally disable Android System instead of Google Services, you will probably kill your ROM. So back a backup first.
And severely worst case, if you totally louse up your ROM, just restore the Nandroid and it'll all be back to normal in a flash. (Get it? In a 'flash'...haha I crack myself up)
The Greenify App Sollution
The battery saving impact is moderate.
This is one that you're just silly not to be doing.
Get the Greenify App from The Play Store
There is a free version. But its freakin' awesome so buy the donate version. It's $3 and the developer has more than earned it for the way he's making your phone awesome. (The donate version also includes some special experimental features. Read all about it. Do NOT just get the donate version. You need the free version too.)
This app basically lets your freeze any user app when you're not actively using it. And unfreeze it automatically when you want to open it again.
So if you have an app that likes to wake your device and run itself when you're not using the phone, you can just Greenify it and it will be prevented from using any system resources when you're not actively using the app.
You don't want to Greenify everything. Some apps need to run 24/7 like your messaing app, your phone app, etc. If you Greenify those you won't get messages or calls. The app is incredibly simple to us. You just select the app that's causing trouble and tell Greenify to 'go'. And it does the rest. It's just as easy to un-greenify an app if you greenify something you shouldn't have.
Not every app on your phone needs to be Greenified. Most apps behave themselves. Only do this to the ones that are showing as causing wakes or alarms or wakelocks in a battery monitor like Better Battery Stats.
Two that I will suggest for everyone to start with are Google Maps and T Mobile's My Account app. Both of these love to run when the phone is alseep.
If for whatever reason Greenify those apps hinders the way you use your phone, just ungreenify them! Simple as that.
Google Play Services and You
The battery saving impact is noticable.
Google Play Services wakes the phone a lot. It also does a lot. Read more about what all Google Play Services does here.
You have two options for this one. The first option is the nuclear option. Freeze Google Play Services outright. It will never bother you, but it might break some usefulness of other google apps.
The second option, thanks to XDA Member Karpfenhai , is to disable only certain aspects of the Google Play Services. This one uses the same technique mentioned above in the Google Services Framework Section, just different services to disable. (Thanks to Perseus71 for making me aware of this one and asking that it be included!) THIS HAS BEEN RECENTLY UPDATED
NEW PROBLEM AS OF MARCH 2015
The battery saving potential is ABSOLUTELY REQUIRED!
Since Google updated Play Services all hell has broken loose on custom roms. You get a persistent and unkillable wakelock for SystemUpdateManager.
The battery drain is horrendous. Your phone is awake and active 100% of the time.
This affects GPS version 7.0.97
I fixed this by going to the permissions manager (built into many aosp roms. If not available in your rom, consult yoir rom thread for ways to alter permissions) and disabling the permission in Google Play Services for "wake" and "keep awake".
Note: Some phones only show "keep awake". Just do that one if that is the case.
The problem is that on custom roms no ota is available. But Google tries to get it anyway. When it fails it doesn't shut down. It just keeps trying.
If the permissions method doesn't work, try this...