Are there any background data limits on Android API < 21? As I know Android has two ways to stop the background networking:

Restrict background data - user can turn off the background data on any application

Power Saver Mode - stops the background data on all processes
As I know Android API 21 introduced a Power Saving Mode and access to a  PowerManager from the code to check if it's on or off.


I have two questions:

Is there something else that can stop the background networking in
Android? Any feature that user can enable?
How does background
data work before the API 21 when there isn't any Power Saver? Does
it have any limits?
From my experience, Battery Saver works in a pretty simple fashion. Its for background data was to simply disable any application that uses background data when the battery falls below a certain level. 

In such a scenario, applications such as email, social networking applications will not sync in the background unless they are brought into the foreground i.e. explicitly opened.


Is there something else that can stop the background networking in Android? Any feature that user can enable?


Before Android 6.0, Marshmallow, there was not a clear way for stock users looking to set per app profiles for data control. 

The only way to enable the granular permissions were through enabling root for the device. And then with an app like App Ops, users can define permissions for individual applications - e.g. disabling background networking for Instagram.

Other apps such as Tasker, work on conditional logic - e.g. disabling background data for certain apps when the screen is off.


How does background data work before the API 21 when there isn't any Power Saver? Does it have any limits?


Android before Lollipop, before API 21, had no inherent mechanism to limit background data. 

There is a thread on Reddit which query the very same question.

The main reasons I managed to gather were:

- Hardware Compliance. 

Older models might not have the ability to introduce such a feature without a) impacting performance b) causing software issues.

- Android is built on Linux. 

With Linux kernels, there is very little benefit to incorporate power saving features due to the method in which the kernel and system was designed. Linux, after all, was not a mainstream operating system. To many, Linux was only deployed in environments such as server configurations or mainframes where power was plentiful.

- OEM Inbuilt Power Saving. 

With most Android devices being pushed out by
   other OEMs and not by Google, the OEM firmware often comes coupled
   with a power saving feature. Google might not have seen the need to
   come out with an inhouse solution then.