Please, explain those not subtle differences.
And then, can you explain me how you can do exactly the same type of background task in Adnroid like there is in iOS?
Ah, and EVERY background task hurts battery
If you really want to know the differences between iOS and Android background tasks (I somehow doubt it), you could read the docs in the
Android SDK and
iOS SDK. A simple google search would reveal lots of copies of the info such as
this one.
The brief answer is that iOS rules apps with an iron fist while Android asks apps to behave nicely.
iOS app don't run on their own. The operating system calls the app and asks it to handle something, could be incoming data or a touch or gesture. iOS gives the app a few seconds to handle the event. If it doesn't complete it in time, iOS kills the app. Thats when you see an iOS device go back to the home screen.
iOS generally does NOT allow background tasks. Detractors will say iOS doesn't have true multitasking. It doesn't have unmonitored multitasking on purpose. iOS has special purpose APIs to support VOIP, streaming music (Pandora) apps and location tracking (navigation) apps. Even these apps get notified by iOS when data is available, they're supposed to process the data and be done. Or else.
The only provision for general background processing is that an app can 'request' to continue running after a user switches away from it. And even then, iOS still calls the app and expects a response within a certain amount of time. The app has to request additional time. Once 10 minutes is reached, iOS will no longer grant the request and will kill the app if it doesnt stop.
Apple did not take the easy way out with this API. This is the hard approach. They did it so that iOS maintains control of the system and knows for certain what apps are doing. This is the key to power management and also memory and CPU.
Android takes a more traditional approach similar to Linux, Mac OS, Windows. Apps can run and do as they please. Android has a process lifecycle and rules about when an app is "supposed" to terminate. But Android does not enforce this rule because the app can run independent of operating system calls. Android assumes apps are trying to be well behaved. It notifies apps of the various life cycle stages. Apps are supposed to quit when they receive some notifications. But if they don't, they may continue to run or Android might kill them if it needs the memory elsewhere. The more memory a phone has (S3), the more likely misbehaved apps may continue running.
And what if an app misbehaves? Who is going to complain? Will Google yank them from Google Play? Not likely. There is no app review. Will users complain? How can they tell why their phone's battery is dying. Must be the phone. Need to get a task killer and just start killing everything in case.
The lack of a moderator in Google Play means that apps don't get cleaned up. Its hard work to develop your app properly. Why bother if no one complains. Over time more apps misbehave with little consequence.
Another confusion for users in iOS is when they receive notifications from apps. They assume that means that app is running. However this is not true. The company making the app has a server which sends a message to Apple's notification server which sends a message to the phone. The phone displays the message. If a user selects it, THEN iOS starts the app to handle whatever the notification was.
At first I found the iOS system limiting. There are things it cannot do. However I've also lived with an Android phone for 3 years and have seen how often apps misbehave. I'm now a believer in the strict controls Apple has placed on background apps. The battery life is amazing given how small the phone is and how small the battery is. Skype on my brick Thunderbolt would kill the battery in a few hours. Skype on iOS isn't running in the background. It takes ZERO battery power unless I have the app running in the foreground, ie I'm using it.