This is purely speculative, but I think there are a couple of reasons why apps like this runs better on Android.
I think it mainly boils down to the fact that app developers on Android have much more freedom than on iOS, for example - instead of having to run the whole app in the background they can just run a small daemon. Android apps don't resort to weird workarounds, like in regular intervals doing something that requires some CPU power, in order to not get autokilled/paused like inactive apps often are on iOS.
On Android they can also do stuff like only using the GPS (which is very battery intensive) if they notice that the cell phone antenna/wifi reception is changing (indicating that you're not standing/sitting still) while GPS background logging on iOS requires constant GPS-logging.
Limits like that makes iOS use way more battery for background location tracking, in my experience at least. Another reason may be simply that Android phones tend to have larger batteries (in mAh) than iPhones do (the iPhone 5 has a 1440mAh battery, the Samsung Galaxy S3 has 2100mAh battery).
While the iPhone 5 is generally more power efficient than the S3 (due to slower CPU with less cores, smaller display and a more optimized OS), I'd imagine that their GPS chips uses approximately the same power, draining the iPhone battery faster since it simply has less power stored.
Foursquare's experience developing apps that use background location has been the exact opposite.
The iOS background location APIs are so restrictive precisely so that you can't drain the battery. The OS, which is running anyway, can listen for major changes in location and start your app only if the location change is relevant to your application.
On Android, your app has to be running in the background always, to constantly check for such changes itself, which significantly drains the battery. If several such apps are running...
> On Android, your app has to be running in the background always, to constantly check for such changes itself, which significantly drains the battery. If several such apps are running...
Strictly false. Your app may still have a daemon in the "running" state in the background, but Android supports the exact same "sleep until significant changes are detected by the OS" method that iOS uses. I have multiple applications that can take action of some form or another based on changes to my location, and unless I have my phone screen turned on and actively running the UI for those apps, they never even appear in the list of applications using the most battery.
I think it mainly boils down to the fact that app developers on Android have much more freedom than on iOS, for example - instead of having to run the whole app in the background they can just run a small daemon. Android apps don't resort to weird workarounds, like in regular intervals doing something that requires some CPU power, in order to not get autokilled/paused like inactive apps often are on iOS.
On Android they can also do stuff like only using the GPS (which is very battery intensive) if they notice that the cell phone antenna/wifi reception is changing (indicating that you're not standing/sitting still) while GPS background logging on iOS requires constant GPS-logging.
Limits like that makes iOS use way more battery for background location tracking, in my experience at least. Another reason may be simply that Android phones tend to have larger batteries (in mAh) than iPhones do (the iPhone 5 has a 1440mAh battery, the Samsung Galaxy S3 has 2100mAh battery).
While the iPhone 5 is generally more power efficient than the S3 (due to slower CPU with less cores, smaller display and a more optimized OS), I'd imagine that their GPS chips uses approximately the same power, draining the iPhone battery faster since it simply has less power stored.