Optimizing Mobile App Battery Consumption

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Optimizing Mobile App Battery Consumption
Complex
~3-5 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Optimizing Mobile App Battery Usage

"Your app drains battery" — one of the most painful review comments. iOS since 16 shows users battery consumption rating by apps. Android since 12 actively signals about background processes through Battery Usage alerts. App may work correctly technically but still be on the "battery hog" list — and users delete it.

Main Consumers: What Battery Historian Shows

Battery Historian — Google tool for analyzing bugreport from Android device. Shows timeline: wakelocks, network activity, GPS fixes, CPU wakeup. Typical picture of problematic consumption app: wakelock every 15 minutes for 2-3 seconds, periodic network requests, GPS in background with high accuracy.

Wakelocks. PowerManager.WakeLock.acquire() without timeout or without guaranteed release() — device can't enter deep sleep. One unclosed PARTIAL_WAKE_LOCK keeps processor active all night. Use WakefulBroadcastReceiver or WorkManager which manage wakelock automatically.

WorkManager and incorrect intervals. Periodic task with 15-minute interval (minimum allowed) on device with aggressive Battery Optimization may run less often. But if task has network request + database write + GPS — 15 minutes is too frequent. JobScheduler batching: group tasks, use setRequiredNetworkType(NetworkType.CONNECTED) to avoid waking radio without net.

GPS: Main Battery Killer

LocationManager with LocationRequest.PRIORITY_HIGH_ACCURACY (Fused Location Provider) enables GPS receiver and keeps it active. 1-2% battery per hour with continuous GPS — real numbers on modern devices.

Proper strategy by app type:

  • Navigation in background: PRIORITY_HIGH_ACCURACY only during active navigation, switch to PRIORITY_BALANCED_POWER_ACCURACY for background route tracking
  • Geofencing: GeofencingClient instead of continuous GPS — triggers only on zone entry/exit, minimal consumption
  • "Find nearby": single getCurrentLocation() instead of continuous updates

On iOS: CLLocationManager with desiredAccuracy = kCLLocationAccuracyBest in background — serious problem. significantLocationChangeMonitoring consumes an order of magnitude less and sufficient for most background geolocation scenarios. allowsBackgroundLocationUpdates = true requires explicit justification — without it iOS aggressively limits updates.

Network Requests and Radio

Radio module (Wi-Fi, LTE) at activation consumes extra energy on bringing up connection, even if transmitting 1 byte. Pattern: one large request every 5 minutes better than 20 small requests every 15 seconds. Batching requests via WorkManager with setRequiredNetworkType ensures requests don't wake radio without net.

HTTP Keep-Alive and HTTP/2 multiplexing reduce TCP handshakes — not just latency but battery.

Push notifications via FCM/APNs — right way to signal new data instead of long polling or short polling. Server-Sent Events and WebSocket acceptable when real-time communication needed, but must close when going background.

iOS: Background App Refresh and BGTaskScheduler

BGAppRefreshTask and BGProcessingTask — modern API for background tasks on iOS. System itself decides when to run them, relying on device usage patterns (nights, charging). Attempts to bypass via background audio trick or VoIP push for non-VoIP apps — App Store Guidelines violation.

URLSession.shared.configuration.waitsForConnectivity = true — network requests don't bring radio up immediately, wait for ready connection.

Practical Case

Fitness tracking app. Users complained about 8-10% battery per hour in background. Battery Historian showed: CoreLocationManager with PRIORITY_HIGH_ACCURACY running continuously, plus PeriodicWorkRequest every 15 minutes making 4 network requests. Switching to PRIORITY_BALANCED_POWER_ACCURACY for background tracking + merging network requests into one + increasing interval to 30 minutes gave 1.5-2% per hour — 4-5x less while preserving functionality.

Diagnostic Tools

Android: Battery Historian, Android Studio Energy Profiler, adb shell dumpsys batterystats iOS: Xcode Instruments → Energy Log, MetricKit MXCPUMetric, Xcode Organizer → Battery Usage Cross-platform: Firebase Performance Monitoring doesn't track battery but tracks network request count and size — indirect indicator

Optimization timeline: one to two weeks — diagnosis, prioritization, fixes.