I know this is a somewhat abstract question and that an answer depends on the device, network, user preferences and so forth. Nevertheless I’m really in need of some educated opinion with regards to how “excessive” I can allow my polling to be. Let’s say one of my typical polling requests consists of an empty request body (a simple GET) and a couple of hundred kilobytes in response, would a service that polls for this every 4 hours be in the category of excessive?
I’m in the unfortunate situation of not being able to use C2DM, so please no answers suggesting this.
I wouldn’t think so. Every 4 minutes would be unpleasant from a battery standpoint. Ideally (IMHO), make the polling period be configurable via a preference.
Also, you might wish to watch Reto Meier’s Google I|O 2012 presentation, particularly the “Efficiency” section, which gets into lots of good low-level battery consumption stuff.
Also also, with that payload size, IMHO battery is less of an issue than the bandwidth cost for those on pay-as-you-go plans. You’re talking ~1MB/day, ~30MB/month. That’s probably not unreasonable, but it would be nice if the user understood why you’re downloading all that data (vs., say, some sort of diff or delta approach), and it would be nice if the user could throttle your behavior within your app. Otherwise, the user might elect to throttle you from Settings on Android 4.x+ devices.