Are there any background data limits on Android API < 21?


Question

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:



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

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


Answer

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.




  1. 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.




  1. 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.


Topics


2D Engines   3D Engines   9-Patch   Action Bars   Activities   ADB   Advertisements   Analytics   Animations   ANR   AOP   API   APK   APT   Architecture   Audio   Autocomplete   Background Processing   Backward Compatibility   Badges   Bar Codes   Benchmarking   Bitmaps   Bluetooth   Blur Effects   Bread Crumbs   BRMS   Browser Extensions   Build Systems   Bundles   Buttons   Caching   Camera   Canvas   Cards   Carousels   Changelog   Checkboxes   Cloud Storages   Color Analysis   Color Pickers   Colors   Comet/Push   Compass Sensors   Conferences   Content Providers   Continuous Integration   Crash Reports   Credit Cards   Credits   CSV   Curl/Flip   Data Binding   Data Generators   Data Structures   Database   Database Browsers   Date &   Debugging   Decompilers   Deep Links   Dependency Injections   Design   Design Patterns   Dex   Dialogs   Distributed Computing   Distribution Platforms   Download Managers   Drawables   Emoji   Emulators   EPUB   Equalizers &   Event Buses   Exception Handling   Face Recognition   Feedback &   File System   File/Directory   Fingerprint   Floating Action   Fonts   Forms   Fragments   FRP   FSM   Functional Programming   Gamepads   Games   Geocaching   Gestures   GIF   Glow Pad   Gradle Plugins   Graphics   Grid Views   Highlighting   HTML   HTTP Mocking   Icons   IDE   IDE Plugins   Image Croppers   Image Loaders   Image Pickers   Image Processing   Image Views   Instrumentation   Intents   Job Schedulers   JSON   Keyboard   Kotlin   Layouts   Library Demos   List View   List Views   Localization   Location   Lock Patterns   Logcat   Logging   Mails   Maps   Markdown   Mathematics   Maven Plugins   MBaaS   Media   Menus   Messaging   MIME   Mobile Web   Native Image   Navigation   NDK   Networking   NFC   NoSQL   Number Pickers   OAuth   Object Mocking   OCR Engines   OpenGL   ORM   Other Pickers   Parallax List   Parcelables   Particle Systems   Password Inputs   PDF   Permissions   Physics Engines   Platforms   Plugin Frameworks   Preferences   Progress Indicators   ProGuard   Properties   Protocol Buffer   Pull To   Purchases   Push/Pull   QR Codes   Quick Return   Radio Buttons   Range Bars   Ratings   Recycler Views   Resources   REST   Ripple Effects   RSS   Screenshots   Scripting   Scroll Views   SDK   Search Inputs   Security   Sensors   Services   Showcase Views   Signatures   Sliding Panels   Snackbars   SOAP   Social Networks   Spannable   Spinners   Splash Screens   SSH   Static Analysis   Status Bars   Styling   SVG   System   Tags   Task Managers   TDD &   Template Engines   Testing   Testing Tools   Text Formatting   Text Views   Text Watchers   Text-to   Toasts   Toolkits For   Tools   Tooltips   Trainings   TV   Twitter   Updaters   USB   User Stories   Utils   Validation   Video   View Adapters   View Pagers   Views   Watch Face   Wearable Data   Wearables   Weather   Web Tools   Web Views   WebRTC   WebSockets   Wheel Widgets   Wi-Fi   Widgets   Windows   Wizards   XML   XMPP   YAML   ZIP Codes