[EVO 4G General] gpz1100:
Use the battery history function in Spareparts to see what's causing wakelock. As for ways of dealing with it, that's up to the developer.

I don't have too many apps on my phone, just the necessities. Of the main apps I use, k9 and handcent both had issues.

With k9, any time I'd receive an email (using imap), the phone would stay wake locked for 60 seconds. This may not seem like a lot, but after getting many messages throughout the day, that could add up to an hour or more. I experienced this both with fresh 3.5.0.1 and evio2 1.75. When Evio2 1.7.7 came out, I was hesitant to switch - I'm not one that flashes roms every other day just for the hell of it. I already had the phone set up and configured. Decided to give it one more shot, I installed 1.7.7 from scratch and started reinstalling apps.

Through out the process, I was very careful to monitor wakelock state. For what ever reason, k9 was no longer causing wake lock. Something in 1.7.7 changed. It wasn't kernel related because I've tried way too many kernels with similar results. So now, the only wake lock is when the program actually receives an email. Usually 1-3 seconds per email received.

Now with handcent, there is a known issue if the popup function is enabled. Anytime a text is received, with popups enabled, the phone enters a wakelock state until that text is acknowledged. This occurs even if the only popup task is to display the text, and NOT turn the screen on, or flash the led. The fix? Disable popups in handcent. I've posted on their forums, but haven't gotten any acknowledgment. I'll continue to use the program, but without this functionality.

For other programs, best bet it to try to narrow down the conditions causing wakelock and either work around them, or work with the author to try to resolve.

Any as for stand by time, I'm sure even with a standard battery, 4 days is possible if the phone is idling the whole time with data turned off, and minimal or no other usage.

As for kernels, there are other factors at play besides the kernel itself. These include the governor in use and its parameters. Two otherwise identical phones with the same kernel and governors, but different governor parameters will result in different battery life.

In the end, I chose to stick with the conservative governor.

These are the governor parameters I changed in the init.d folder

Filename: 01cpufreq_screenstate_scaling

MAX_CPU_SPEED_VDD="921600"
MIN_CPU_SPEED_VDD="245000"
#MIN_CPU_SPEED_VDD="384000" DEFAULT
#MAX_CPU_SPEED_VDD="921600" DEFAULT

CONSERVATIVE_SAMPLING_RATE="50000"
CONSERVATIVE_UP_THRESHOLD="80"
CONSERVATIVE_DOWN_THRESHOLD="55"
CONSERVATIVE_FREQ_STEP="10"
#CONSERVATIVE_UP_THRESHOLD="65" DEFAULT
#CONSERVATIVE_DOWN_THRESHOLD="35" DEFAULT
#CONSERVATIVE_FREQ_STEP="15" DEFAULT

These settings were not arrived at trivially, but were changed slightly one at a time, then tested by using the phone. I was looking for decent response/user experience. I was also trying to get the phone to utilize a larger range of cpu speeds than originally programmed into the ROM/kernel. Google the different parameters to understand what they're referring to.

Edit: I'm also using the -100mV undervolt script as opposed to -50mV that the rom originally comes with.