Energy Patterns for Mobile Apps

This is an open catalogue of energy-related patterns in mobile applications. Our goal is to share the knowledge across all developers and make mobile apps more energy efficient. We'd love to count on you to make this a thorough catalogue and available to the mobile development community. Help us spread the word.

A visualization with prevalence and co-occurence of patterns can be found here.
News This catalog has been accepted to the Journal of Empirical Software Engineering. Check out the preprint.

Dark UI Colors
30 occurrences

Provide a dark UI color theme to save battery on devices with AMOLED screens.

Dynamic Retry Delay
12 occurrences

Whenever an attempt to access a resource has failed, increase the interval of time waited before asking access to that same resource.

Avoid Extraneous Work
32 occurrences

Avoid performing tasks that are not visible/valuable to the user and/or quickly become obsolete.

Race-to-idle
32 occurrences

Release resources or services as soon as possible (e.g., wakelocks, screen).

Open Only When Necessary
7 occurrences

Open/start resources/services only when they are strictly necessary.

Push Over Poll
16 occurrences

Use push notifications to receive updates from resources, instead of actively querying resources (i.e., polling).

Power Save Mode
29 occurrences

Provide an energy efficient mode in which user experience can drop for the sake of better energy usage.

Power Awareness
41 occurrences

Have a different behavior when device is connected/disconnected to a power station, or has different battery levels.

Reduce Size
3 occurrences

When transmitting data, reduce its size as much as possible.

WiFi Over Cellular
15 occurrences

Delay or disable heavy data connections until the device is connected to a WiFi network.

Suppress Logs
8 occurrences

Avoid using intensive logging (< 1Hz).

Batch Operations
18 occurrences

Batch multiple operations instead of putting the device into an active state many times.

Cache
16 occurrences

Avoid performing unnecessary operations by using cache mechanisms.

Decrease Rate
37 occurrences

Increase time between syncs/sensor reads as much as possible.

User Knows Best
44 occurrences

Allow users to enable/disable certain features in order to save energy.

Inform Users
10 occurrences

Let the user know if the app is doing any battery intensive operation.

Enough resolution
17 occurrences

Collect or provide high accuracy data only when strictly necessary.

Sensor Fusion
15 occurrences

Use data from low power sensors to infer whether new data needs to be collected from high power sensors

Kill Abnormal Tasks
11 occurrences

Provide means of interrupting energy greedy operations (e.g., using timeouts, or users input).

No screen interaction
10 occurrences

Whenever possible allow interaction without using the display.

Avoid Extraneous Graphics and Animations
19 occurrences

Graphics and animations are really important to improve user experience. However, they can also be battery intensive – use them with moderation.

Manual Sync - On Demand
9 occurrences

Perform tasks only when the user specifically asks.


Downloads
Publications
  • Luis Cruz and Rui Abreu (2019). Catalog of Energy Patterns for Mobile Applications. Journal of Empirical Software Engineering. DOI · preprint
Media Coverage