Understanding and Managing Android App Standby Buckets

13 min read Learn what Android App Standby Buckets are, how to check each app’s bucket, and practical ways to influence them for better battery performance. October 13, 2026 01:00 How to Understand and Manage Android App Standby Buckets to Improve Battery Life

Why App Standby Buckets Matter

Since Android 6.0 (Marshmallow) the OS has been classifying apps into standby buckets. The bucket determines how aggressively the system limits background work, network access, and wake‑locks for that app. An app in the ACTIVE bucket can run freely, while an app in RESTRICTED or NEVER gets very tight limits. Understanding these buckets helps you identify why a particular app is draining battery or why notifications are delayed.

Quick Overview of the Five Buckets

  • ACTIVE – App is in the foreground or frequently used. No background restrictions.
  • WORKING_SET – App is used regularly (e.g., daily) but not currently visible. Limited background jobs.
  • FREQUENT – App was used several times in the last few days. Moderate restrictions.
  • RARE – App has been used only a few times in the past month. Heavy restrictions.
  • RESTRICTED – App has not been used for weeks or months. Background jobs are almost completely blocked.

Android also defines a special NEVER bucket for apps that the user has explicitly restricted (e.g., via battery‑optimization settings). The system may also place an app in RESTRICTED when power‑saving mode is on.

Before You Start

  • Charge your device to at least 50 % or keep it plugged in – some steps involve ADB commands that may temporarily increase CPU load.
  • Enable Developer options (Settings > About phone > Tap Build number 7 times).
  • Enable USB debugging (Settings > System > Developer options > USB debugging).
  • Install the adb platform‑tools on your PC/Mac. No root is required for any step in this guide.
  • Make sure your phone and computer are on the same Wi‑Fi network if you prefer a wireless ADB connection.

How to View an App’s Current Bucket

The easiest way to see which bucket an app occupies is via ADB. You can also use third‑party apps that expose the same information, but ADB gives the most reliable result.

Step 1 – Connect Your Phone

  1. Plug the phone into your computer with a USB cable.
  2. On the phone, you’ll see a prompt “Allow USB debugging?” – tap Allow. You can also check “Always allow from this computer” to avoid the prompt next time.
  3. Open a terminal (Command Prompt, PowerShell, or a shell on macOS/Linux) and verify the connection:
    adb devices
    You should see a line with your device’s serial number and the word device.

Step 2 – List Buckets

  1. Run the following command to dump the standby bucket for a specific package (replace com.example.app with the real package name):
    adb shell dumpsys deviceidle get appstandby com.example.app
    The output will be something like ACTIVE, WORKING_SET, etc.
  2. If you want a full list of all apps and their buckets, use:
    adb shell dumpsys deviceidle get appstandby
    This prints a long list; you can pipe it to grep (Linux/macOS) or use findstr (Windows) to filter for a particular app.

If you don’t know the package name, you can retrieve it from the Play Store URL or via the Settings > Apps list – tap an app, scroll down to “App details in store”, and copy the part after id=.

How to Influence an App’s Bucket

Google does not provide a public UI to manually move apps between buckets – the system decides based on usage patterns. However, you can nudge the system by using a few safe techniques.

Method 1 – Frequent Interaction

Simply opening the app, using a core feature, and then closing it will signal to Android that the app belongs in a higher bucket. For apps that you want to stay in ACTIVE or WORKING_SET, make it a habit to launch them at least once a day.

Method 2 – Use adb shell am set-inactive (Android 10+)

Android 10 introduced a developer‑only command that can temporarily mark an app as inactive, which forces it into the RESTRICTED bucket. While this is intended for testing, you can also use the opposite – clearing the inactive flag – to move an app back to a higher bucket.

  1. Clear the inactive flag for the target app:
    adb shell am set-inactive com.example.app false
  2. Immediately open the app once. The system will now treat it as recently used and promote it to WORKING_SET or higher.

Warning: This command does not guarantee a permanent bucket change; the system may demote the app again if you stop using it.

Method 3 – Exempt from Battery Optimization

When an app is placed in RESTRICTED because the user or the system has enabled battery optimisation, you can manually exempt it.

  1. Open Settings > Battery > Battery optimization.
  2. Tap the dropdown that says “Not optimized” and switch to “All apps”.
  3. Select the target app and choose “Don’t optimize”.

Exempting an app moves it out of the RESTRICTED bucket, but the system may still place it in RARE if you don’t use it often.

Method 4 – Use a “Foreground Service” Wrapper (Advanced)

Some power users create a tiny foreground‑service app that simply starts a persistent notification. Adding the target app to the same notification channel can keep the OS thinking the app is active. This approach requires building a small APK and is beyond the scope of a no‑root guide, but it’s mentioned for completeness.

Practical Checklist for Battery‑Hungry Apps

When you notice an app draining battery, follow this checklist to decide whether the bucket is the culprit and how to address it.

  1. Identify the app’s bucket. Use the ADB command from the “View an App’s Current Bucket” section.
  2. Check usage frequency. If the bucket is RARE or RESTRICTED but you use the app daily, it likely means Android hasn’t registered the usage correctly (e.g., you open it only via a deep link).
  3. Force a promotion. Open the app, then run adb shell am set-inactive … false to clear any stale inactive flag.
  4. Review battery‑optimization settings. Exempt the app if it’s being aggressively throttled.
  5. Monitor after changes. Use Battery Historian (or Settings > Battery > Battery usage) for at least 24 hours to see if the drain improves.

Using Third‑Party Tools to Visualize Buckets

For users who prefer a GUI, several free apps on the Play Store can display standby buckets without root:

  • Package Manager – Shows detailed package info, including the current bucket.
  • Battery Doctor (by AccuBattery team) – Includes a “Battery usage” screen that lists buckets.

These apps internally call the same ADB‑style commands, so the data is identical. They can be handy if you don’t want to keep a computer nearby.

Troubleshooting Common Issues

1. ADB Returns “Permission denied”

This usually means the computer is not authorized for USB debugging. Re‑connect the cable, watch for the prompt on the phone, and tap Allow. If the prompt never appears, toggle “USB debugging” off and on again.

2. The bucket never changes after you open the app

  • Make sure you’re not using a “lite” version of the app that runs in a separate process (some games split into a launcher and a game engine).
  • Check if the app has a built‑in battery‑saving mode that forces it into a low bucket; disable that mode in the app’s settings.
  • Force a bucket refresh by restarting the device after using the app.

3. The app still drains battery after moving to a higher bucket

Bucket promotion only relaxes background limits. If the app itself performs heavy work (e.g., constant GPS, video playback, or frequent sync), you’ll need to address those behaviours directly – turn off background sync, reduce location accuracy, or limit push notifications.

4. “adb shell dumpsys deviceidle” command not found

Older Android versions (< 6.0) do not expose the standby‑bucket API. In that case you cannot query the bucket, and the OS uses a simpler “Doze” model. Consider upgrading the device or focusing on classic battery‑optimization steps (disable background data, limit wake‑locks).

Advanced: Querying Buckets Programmatically

If you are a developer or comfortable with scripting, you can embed the bucket query into a small shell script that logs changes over time. Example (Linux/macOS):

#!/bin/bash
while true; do
  adb shell dumpsys deviceidle get appstandby > /tmp/buckets.txt
  sleep 3600  # log every hour
done

This creates a simple timeline you can later analyze to see how your usage patterns affect bucket placement.

Best‑Practice Summary

  • Regularly open apps you rely on to keep them in ACTIVE or WORKING_SET.
  • Use the ADB am set-inactive trick only when you need an immediate promotion.
  • Exclude critical apps from battery optimization if they suffer from RESTRICTED throttling.
  • Combine bucket management with classic power‑saving measures: limit location, background sync, and push notifications.
  • Periodically audit your battery usage with Battery Historian or the built‑in Battery screen to catch regressions early.

By understanding how Android’s App Standby Buckets work and applying the practical steps above, you can take control of background restrictions, reduce unexpected battery drain, and keep your favorite apps responsive.

User Comments (0)

Add Comment
We'll never share your email with anyone else.