Android's native process management vs. Greenify Disclaimer: I'm not in any way connected to the Greenify developers, nor am I trying to promote Greenify or anything. I'm actually interested in the answers to these questions.

I've found that with a lot of Android devices that I have managed, they become slower the more apps one installs on them. This is especially true with apps that perform some sort of tasks in the background. Often, devices can become so slow that they are a real pain to use.

The solution I found to this was an app called Greenify, that I use with root privileges and an Xposed module. I find that I can keep all the apps on the devices, but "Greenify" all of them. (I think this means that inactive apps are consistently "hibernated" or deprived of system resources, leaving the resources available for active apps.) This usually makes the device much snappier, yet I find that the impeding effect on the functionality of the apps is quite minimal. Needless to say, I consider Greenify a must, especially on devices with lots of resource hogging apps and/or limited hardware.


Does Android do something similar to Greenify natively? (Depriving background apps of resources in order to free it up for active apps?)
If yes, how is Greenify different from Android's native resource management?


I find that lots of people have Android devices that tend to slow down over time, and many of them end up just buying a new, more powerful device once every few years. But if they used Greenify (or something similar), they might have been satisfied with the performance of the older device for many, many more years. I for example, have a five year old phone, have tons of apps on it, and am quite happy with its performance when using Greenify. However, without Greenify (and with all my apps), the phone is so slow that it's barely usable.


Is there any native Android way to prevent apps from running in the background and hogging system resources?


For example, in GNU/Linux distros like Debian and Ubuntu, apps don't run or consume any resources at all unless you explicitly launch them (or have them set to launch at startup.) It's the same with OS X and Windows. And when you shut a program completely down, it can no longer consume any resources. I think even iOS automatically kills background apps when it needs the resources for something else.

I've used manual task killers, but after  a while, I find that all the apps are back up running in the background again, even if I haven't launched them at all.


Is it true that Android is somewhat unique in allowing apps to run in the background, consuming resources?
From the Android developer site:


  
  If an activity has lost focus but is still visible (that is, a new non-full-sized or transparent activity has focus on top of your activity), it is paused. A paused activity is completely alive (it maintains all state and member information and remains attached to the window manager), but can be killed by the system in extreme low memory situations.
  If an activity is completely obscured by another activity, it is stopped. It still retains all state and member information, however, it is no longer visible to the user so its window is hidden and it will often be killed by the system when memory is needed elsewhere.
  If an activity is paused or stopped, the system can drop the activity from memory by either asking it to finish, or simply killing its process. When it is displayed again to the user, it must be completely restarted and restored to its previous state.
  


Also:


  So, as the system runs low on memory, it may kill processes [...] beginning with the process least recently used, but also giving some consideration toward which processes are most memory intensive.


As far as technical implementation goes, the system calls into apps to let them know that they need to release memory or risk being killed:


  Also, when your app process is currently cached, you may receive one of the following levels from onTrimMemory():
  
  
  TRIM_MEMORY_BACKGROUND
  
  The system is running low on memory and your process is near the beginning of the LRU list. Although your app process is not at a high risk of being killed, the system may already be killing processes in the LRU cache. You should release resources that are easy to recover so your process will remain in the list and resume quickly when the user returns to your app.
  TRIM_MEMORY_MODERATE
  
  The system is running low on memory and your process is near the middle of the LRU list. If the system becomes further constrained for memory, there's a chance your process will be killed.
  TRIM_MEMORY_COMPLETE
  
  The system is running low on memory and your process is one of the first to be killed if the system does not recover memory now. You should release everything that's not critical to resuming your app state.
  


So to directly answer your questions:


No, Android does not clean anything up for apps, but it lets them know to do so themselves and kills them if they don't (or if it's not enough).
Greenify appears to do "on-the-fly" disabling of apps, so it is not allowed to run anything when in the background (and can't be started automatically when not running), but can still do anything when in the foreground.  This is completely different from how Android does it as you see above.
Yes &mdash; disable them (from Settings &rarr; Applications &rarr; &lt;App Name&gt;) (though you will have to re-enable when you want to run them manually). Or, for those that don't have automatically restarting services, simply kill them (i.e., long press the Menu button and swipe them away).  The latter will not prevent them from restarting if the system delivers an Intent to them, etc.
No, not at all.  True multitasking has long been available on mobile devices &mdash; the original iPhone was an oddity when it launched without that ability.