my solution has always been to buy phones with field-replaceable batteries and carry fully charged spares.
That really doesn't solve the problem of the phone gobbling 20% of the battery in 30 minutes or less and as irony would have it, when I went to the store after posting this there was some issue with my local cell or bad connectivity inside the store and my phone ate almost 50% of the battery while shopping for groceries for less than an hour.
I didn't notice the issue until it hit about 35% and quickly put it in airplane mode to stop the bleed.
Damned annoying and I'm thinking about telling Sprint I need a different phone or else as they wouldn't be the first cell company I've ever broken out of a contract without paying the 'penalty' if they refused to replace it. It was easy to do too because a service contract implied service and I've had Sprint at my current location for quite some time and the salesman assured us our area was fully covered and that means either the phone they sole me is defective or their coverage of my is now defective and it doesn't matter which but lack of functionality does not constitute service which is how I've bailed before when it didn't work.
It's really sad because the Samsung Galaxy, other than this issue, is probably the best phone I've ever used and I really enjoy it but it's quite possible it would work much better on Verizon which is where it was roaming :)