okay to cut long story short, I am not going to explain each background app but there is a threshold RAM level which is allocated by android system, reaching which the system will start to kill the unwanted apps which are running background.
bcoz android has to do a lot of multitasking hence keeps mostly used apps in inactive state in memory and set their priority ...
do one thing post a thread in xda developer forums, there are some really genius geeky guys who will give u a detailed explaination ... also suggest you to google how android does memory management and multitasking if you wanna go deep into understand it technically
You don't really need to be a genius geeky guy in a forum to understand how Android works and Googling everything is not always the solution. Some OOP concepts and a little bit of Java knowledge will generally help you in that.
Lets see if I can explain this, Android uses the Dalvik VM to do memory management.If memory allocations are not done properly by an app (not every app including some Google apps do not properly use the memory allocator), the garbage collector has performance issues.
There are 5 types of processes in Android; Running,Seen,Started,Background,Empty. Active are the ones which are currently being used by the user.Visible are the ones which are partially obscured like app running but not seen on screen,Started are the ones which need to run without being visible,Background are the ones with nothing visible and no started services these are the ones destroyed regularly by Android in a Last visible first killed mode,Empty are the ones retained in memory to relaunch apps faster, again regularly destroyed.
Android starts closing apps when it needs more memory. But long before this threshold is reached, users start seeing lags,perf problems due to the memory allocations done for short lived pbjects. The Garbage collector of Android cannot optimize the collection of these objects which are sometimes generated in very critical areas of the code affecting performance.
To explain in more simpler terms, lets say you are running a graphics intensive app like a 3D game and while playing garbage collection occurs due to some other app running in the background has wrongly allocated the memory, you will notice a frame drop from say 25 to 10 which definitely is noticeable to the user, who realizes that he is seeing lag or performance issue.
{edited since it somehow got deleted before posting} So generally its not android that causes the problem but its the Apps that are running and not properly coded. Task killers should only be used to kill unresponsive apps which cannot be killed from running services. But Android is not perfect either, so memory management even though well done, still needs to be improved on a large scale, even Android developers themselves agree on it. {edited}
Hopefully this helps in clearing up the concept. For others I am sorry for the long and irrelevant post, but I just wanted to get my point across.