How does charging battery in normal, speed and trickle affect battery life?


Question

Battery doctor uses different stages of charging:



speed; continuous and trickle (keep charging when the battery is full for some time)



does this really extend battery life?



and can an app change the way the device is being charged anyway?


Answer

Proper explanation is fairly technical, so am answering in broad terms (you can skip the links if you don't want to get into nitty gritty)



Charging rate is a measure that governs at what current a battery is charged and discharged. At 1C, a battery rated 1,000mAh charges at a current of 1,000mAh. In an ideal world the battery would be fully charged in 60 minutes. At 1C, the same battery discharges at 1,000mA. Ideal charging rate is accepted to be around 0.5 to ,0.8 C for maximum battery life (battery life is measured in charge/discharge cycles). When you charge a battery at this rate, it goes through three stages of charging (Constant Current Charge,Saturation Charge and Ready No Current). For more information, if you are inclined, battery university has a bunch of informative articles on this.



If you charge your battery with the OEM charger and measure charging rate using 3C Battery Monitor Widget or Ampere, and plot, you will find that the graph fairly resembles to that of the referenced link above of battery university. This would also fairly resemble , the "continuous" mode of your app



If you want maximum battery life, it is best to stick with OEM charger or equivalent charger that is equally rated. Device manufacturers have different algorithms built in to regulate current flow at different stages of battery charging mainly to:



a) quickly charge the battery , typically to charge the battery to 50% as you see advertised as a special feature (on a side note, cheap battery chargers do it the hardware way (and a destructive way). See this to get an idea https://electronics.stackexchange.com/). The disadvantage with this and quick or fast charge is that battery is not charged sufficiently in the saturation charge stage (it spend less time in that stage) and doesn't deliver the same capacity as with regular charge. It's like drinking a bottle of Coke, when you are hungry, you may feel full but your body hasn't got the nutrients and calories as from a regular meal :-)



b) to prevent battery damage due to excessive charging like in cases of leaving the charger plugged in overnight (by limiting charging current to near zero)



There is NO way for an app to over ride the device specific algorithms and it's implementation in the ROM. To change this implementation, app will have to change the system files after the system has booted, which is not possible AFAIK, and these apps cannot possibly ship that across the spectrum of devices and different Android Versions. On the other hand, custom kernels(and associated kernel tweaker apps) can permit a) fast charging or quick charging b) increasing or decreasing the charging current provided the ROM and hardware support. Agni kernel, is one such kernel I have used to charge faster when connected to USB. Note that charging at more than 1C can damage battery as shown in Fig.2 here



Charging in "trickle charge" of your app is similar to charging your battery for longer period in the last stage of battery charging, which is useful if you want to have the battery at 100% charge when you unplug the charger, but is a bad idea, since battery chemistry dictates battery deterioration at high temperatures due to internal stress.



A variation of this last stage charging is called "bump charging", wherein the charger is disconnected upon full charge, discharged for a few minutes and again charged. This cycle is repeated a few times. A bad idea for longevity of battery as can bee seen from Fig.2 and Table 2 here.



Both these methods are not recommended for normal usage but may be useful occasionally, when you have a long day ahead and may not be able to charge like travelling, hiking etc.



(Related aspect- you may have noticed that your battery drop is much faster from 100 to 90%, compared to say 80 to 70 %. Which is actually a good thing, because, it is protecting your battery staying at higher internal temperatures. To understand this, have a look at Your battery gauge is lying to you....not a bad thing. Based on this, IMO, it is better to charge the battery when it drops to 30% and stop charging when it reaches 90%. ( I can almost hear one ask, what about battery life which is measured in number of charge/ discharge cycles, won't that be reduced, if I try this? No, it shouldn't matter, because a cycle is not defined by how many times you charge but what is the capacity of charge you used up. To understand this concept better, read what constitutes a discharge cycle)



Charging in "speed charge (mode of your app)", is also not recommended as it does not go through fully, all the three stages of battery charging at recommended levels and is not good for battery life



Hence, bottom line is these kind of apps are better not used and stick to OEM rated chargers and OEM recommended charging methods.



PS: Edited your question to add relevant tags


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