The Android Resource Economy (TARE) Framework
Battery management in modern Android releases extends far beyond static App Standby buckets and coarse Doze modes. Introduced in Android 13 (API level 33), The Android Resource Economy (TARE) introduces an economic framework designed to regulate how applications consume system resources. Instead of hard runtime cut-offs, TARE treats device power, network usage, and background processing as limited commodities traded using virtual currency known as Android Resource Credits (ARCs).
Under TARE, applications maintain credit ledgers managed by the internal TareController and EconomyManager services. Apps earn credits through user engagement (such as being launched into the foreground or receiving user interactions) and spend credits when executing background jobs via JobScheduler, waking the system with AlarmManager, or performing network syncs. When a device’s battery level depletes or thermal load increases, the system raises the cost of actions or restricts credit issuance, preventing aggressive background applications from exhausting device longevity.
For Android engineers, performance analysts, and OEM developers, the Android Debug Bridge (ADB) exposes deep diagnostic inspection into this economy through dumpsys tare and its companion command-line interface cmd tare. Using these tools, you can audit credit balances, inspect ledger transaction histories, and simulate economic constraints without draining physical batteries.
Establishing an ADB Session and Checking TARE Service Status
To inspect the TARE subsystem, connect your Android device (running Android 13 or later) via USB or Wireless ADB, and ensure USB debugging is authorised:
# Verify connected device state
adb devices -l
# Check that TARE service is registered and responsive
adb shell service check tare
If the device supports TARE, the output returns Service tare: found. In production retail builds, TARE may operate in an alarm-only or job-only evaluation mode, or remain disabled until enabled via device configuration flags. You can inspect the global operational state of TARE directly:
# Query TARE global configuration and enablement status
adb shell cmd tare print-settings
To explicitly enable TARE evaluation across all subsystems (JobScheduler and AlarmManager) for development and testing purposes, execute:
# Force-enable TARE across all subsystems
adb shell cmd tare set-policy-engine-state 1
Auditing App Credit Balances and Ledger History via dumpsys tare
The primary diagnostic dump provided by dumpsys tare outputs system-level economic parameters, including current battery level conversions, circulating currency caps, and per-package ledgers:
# Dump the complete TARE diagnostic state
adb shell dumpsys tare
Because the full dump contains extensive telemetry across every installed package, filter the output to isolate specific target applications:
# Inspect TARE state for a specific package
adb shell dumpsys tare | grep -A 25 "package: com.example.app"
A typical package ledger entry reveals vital economic metrics:
Ledger: com.example.app (u0)
Current balance: 145000000 ARCs (14.5 ARCs)
Transaction history:
-2026-11-08 12:00:15: ACTION_JOB_RUN (-2.0 ARCs)
+2026-11-08 12:15:00: REWARD_APP_INTERACTION (+10.0 ARCs)
-2026-11-08 12:20:30: ACTION_ALARM_CLOCK (-0.5 ARCs)
Cost modifiers:
VIP status: false
Exempted: false
In the ledger output:
- ARCs Balance: The total available credit the package holds. Background tasks cannot execute if the cost of the requested action exceeds the package’s current balance.
- Transaction History: Chronological records of credit debits (actions performed) and credits earned (rewards for user interaction or periodic distribution).
- Cost Modifiers: Indicates whether the package has been granted exemption (such as battery optimization whitelisting) or designated as a system-critical VIP.
Inspecting Action Costs and Consumption Rules
Each background operation in Android carries an assigned ARC price that fluctuates depending on overall battery health. When the device is fully charged or connected to AC power, action costs are minimal. As the battery percentage drops, costs escalate exponentially.
To inspect current cost tables for alarms and jobs:
# View current ARC pricing for background actions
adb shell dumpsys tare | grep -A 15 "Action costs:"
Standard action pricing structures include:
ACTION_JOB_MAX_RUNTIME:ARC cost for continuous execution of high-priority background jobs.ACTION_ALARM_WAKEUP:Cost associated with triggering a hardware wakeup alarm while the device screen is off.ACTION_ALARM_NONWAKEUP:Lower-tier cost for standard alarms that execute when the CPU is already active.
Simulating Economic States and Credit Adjustments
Developing robust background routines requires validating how applications behave when credits are depleted. Rather than waiting for hours of physical discharge, cmd tare provides diagnostic controls to alter package balances and manipulate economic levels directly.
To manually credit or debit ARCs from an application ledger to test depletion handling:
# Add 50 ARCs to a target application
adb shell cmd tare grant-credits 0 com.example.app 50
# Set balance to zero to simulate severe credit starvation
adb shell cmd tare set-balance 0 com.example.app 0
To test how background jobs respond when the system simulates an emergency battery state (e.g. 5% battery where all non-critical background jobs are suspended):
# Simulate critical economic state
adb shell cmd tare set-economic-level 3
Economic levels range from 0 (Normal/Surplus – abundant credits, minimal action cost) to 3 (Emergency/Depleted – extreme action costs, strict background throttles).
Resetting TARE and Restoring Production Defaults
Following diagnostic profiling, restore default device behavior to avoid lingering overrides that impact daily power consumption:
# Clear custom credit overrides for target package
adb shell cmd tare reset-balance 0 com.example.app
# Revert economic simulation overrides back to automatic system management
adb shell cmd tare reset-economic-level
# Verify system has returned to normal automatic regulation
adb shell cmd tare print-settings
Understanding and debugging the TARE subsystem ensures Android applications schedule background workloads sustainably, respect platform energy constraints, and preserve battery life across diverse user habits.