[Samsung Galaxy Nexus] cbarrick:
I think the way Android handles tasks has been talked about everywhere since the beginning of time and yet a lot of people still don't seem to get it. Understanding the application model is key to understanding how the task list works and why it works like that.

Android was designed from the start to follow the multitasking, single-window paradigm. In Android, an "activity" is equivalent to a window on your desktop class operating system, and only one is shown at a time. Activities are kept in memory so that you can switch between them and return to the last state they were in. If the main memory is full, it then "kills" the activity but saves it's state to the auxiliary memory (internal flash or w/e your device uses) so that when you return to it, Android can restart the app in the same state. When you "swipe" close an app in the task list, it "kills" the activity without saving the state, so the next time you open it, it starts from scratch.

I keep saying "kill" in quotes because Android further abstracts the traditional idea of a task, but then again so do desktop class operating systems. Apps have several parts. Activities are like the windows that show up when you open an app in OS X or Windows. Services are like those things that run in the background in your system tray. Apps my provide many of both (as well as a few other types of things which are less important to this conversation). Swiping closed an activity is exactly like pressing the X button on a window. Just like in a desktop class operating, this does not guarantee the task is killed, just the window. However, certainly the bulk of the work of an app is done in the activity, so it is effective to swipe close an activity.

It's also worth noting that activities are paused when not in the foreground! Let me say it again, activities to not use any worthwhile amount of cpu time unless they are in the foreground. This is the single-window model and it is perfect for a mobile operating system.

The task list manages activities. That is it's purpose. It does it's job perfectly. It fit's the paradigm perfectly and is exactly the same as pressing the close button on other operating systems.

The other way apps interface with Android is through services. Services are ways for apps to do stuff in the background. They have no interfaces, but they can communicate with activities. Services define when they should run and when they should close. To manually stop a service, you open up the app info for the corresponding app and force close it. Since often activities depend upon services, all the activities for the app will also be stopped. Swiping does not kill services and I don't think it should. In Windows, if I press the X on μTorrent, it still keeps downloading my stuff. If I swipe close Google Music, it still plays. These are behaviors I want and I expect. Rampant services are caused by poor app development. Android gives app developers so much more power in what they can do that ultimately you get a lot of uneducated developers improperly using the system.

TLDNR, Bottom line: The task list manages activities. When you swipe an activity, it is indeed fully stopped. This is how I'd expect it to work and how I want it to work. Background services are separate all together. The designer of the service determines when it should start and stop. Bad engineers make bad apps that abuse the service model. Do not rely on the task list to kill services.

The system is designed so that you shouldn't have to think about things being open. If you're computer savvy enough to realize that more running services means more battery drain (most regular folks don't know that), you should educate yourself about the system and realize that you don't need to manually manage open apps. The system is great at that. If a particular app is draining your battery, it's their fault not Google's. Messaging apps need services running to check for messages, other apps have other excuses for constant services. If you have a problem, uninstall a few. No one really needs enough that it would actually cause a problem anyway