Since Android 9 (API 28) the system groups every installed app into a standby bucket. The bucket reflects how recently the user has interacted with the app and how important the app is for the device’s overall experience. Based on the bucket, Android throttles background jobs, network access, and wake‑locks. An app in the ACTIVE bucket can run freely, while an app in the RARE bucket may be frozen for hours. If you notice an app lagging, missing notifications, or draining battery unexpectedly, the bucket is often the hidden culprit.
Understanding and, when safe, adjusting an app’s bucket lets you:
Settings → About phone → Build number and tap it seven times. Then open Settings → System → Developer options and turn on USB debugging.platform-tools zip from Google’s Android developer site and extract it. macOS and Linux users can install via Homebrew (brew install android-platform-tools) or their package manager.adb devices.Open a terminal on your computer and run:
adb shell dumpsys deviceidle get-standby-buckets
The output lists each package with its bucket, for example:
com.whatsapp ACTIVE
com.facebook.katana WORKING_SET
com.example.unusedapp RARE
If the list is long, you can filter for a specific package:
adb shell dumpsys deviceidle get-standby-buckets | grep com.whatsapp
Take note of the bucket you want to change.
Android only allows the system or a privileged app to permanently change a bucket. However, you can ask the system to treat an app as ACTIVE for a limited period using the am set-inactive and am set-standby-bucket commands. Run:
adb shell am set-standby-bucket com.whatsapp ACTIVE
Replace com.whatsapp with the package name of your target app. The command succeeds silently; you can verify the change by repeating step 1.
Why this works: The command tells the Activity Manager to move the app into the requested bucket. The system may later move it back if usage patterns don’t justify the higher bucket, which is why this is a temporary fix.
If an app keeps slipping back to WORKING_SET or RARE despite your bucket change, you can add it to the system‑wide whitelist. This tells Android not to apply Doze or App Standby restrictions to the app.
adb shell cmd deviceidle whitelist +com.whatsapp
To remove an app from the whitelist later:
adb shell cmd deviceidle whitelist -com.whatsapp
Warning: Whitelisting bypasses battery‑saving features, so use it only for apps that truly need constant background access (e.g., VoIP, navigation, or a trusted messenger).
On most devices you can achieve a similar effect without a computer:
Settings → Battery → Battery usage.This UI method adds the app to the same internal whitelist used by the ADB command.
After adjusting the bucket or whitelist, monitor the app for a few hours:
Settings → Battery → Battery usage. A small increase is expected for whitelisted apps.| Bucket | Typical Usage | System Restrictions |
|---|---|---|
ACTIVE | App is in the foreground or the user interacts with it frequently. | No restrictions – background jobs, network, and wake‑locks run normally. |
WORKING_SET | App used regularly but not currently visible. | Background jobs may be deferred; network access is allowed but may be throttled. |
FREQUENT | App used occasionally (e.g., a news reader checked once a day). | Background jobs are heavily deferred; network may be blocked for long periods. |
RARE | App rarely used (e.g., a game played once a month). | App is effectively frozen; no background work, network, or alarms. |
Knowing the bucket definitions helps you decide which apps deserve a higher bucket and which can stay low to save power.
adb shell pm list packages | grep partial_name to locate the exact identifier.adb shell cmd deviceidle whitelist and remove any that no longer need it.adb script that runs on startup (via adb shell pm grant for a helper app you create).If adb shell dumpsys deviceidle get-standby-buckets returns “Permission denied” or an empty list, your device may be running a heavily customised Android version (e.g., some Chinese OEMs) that hides the command. In that case, rely on the Settings UI (Battery → Battery optimisation) to manage the whitelist, and use third‑party battery‑monitor apps to infer bucket behaviour.
On Android 12 and newer, the command adb shell am get-standby-bucket is deprecated in favour of the deviceidle sub‑command shown above. Using the newer syntax ensures compatibility across versions.
Most users will benefit from leaving the system to manage buckets automatically. Interfering with the algorithm can cause:
ACTIVE.Reserve manual bucket changes for apps that you know need constant background operation and that you trust not to abuse the extra power.
By following the steps above you can:
ACTIVE for a smoother experience.This systematic approach gives you fine‑grained control over Android’s power‑management engine without rooting your device or installing third‑party launchers. It’s a practical way to get the best of both worlds: long battery life and reliable app performance.









