| 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. |
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...