Understanding ADB Shell Dumpsys Alarm Output

Understanding ADB Shell Dumpsys Alarm Output

22 April 2024 Stephan Petzl Leave a comment Tech-Help


When working with Android development, setting and managing alarms is a common task that can sometimes become challenging. The Android Debug Bridge (ADB) provides a useful command, adb shell dumpsys alarm, which allows developers to retrieve information about all alarms scheduled on a device. However, interpreting the output of this command can be daunting due to the lack of detailed documentation. This guide aims to explain the meaning of the various parts of the output to help you understand and manage your alarms more effectively.

Understanding the Output

When you run the adb shell dumpsys alarm command, you’ll receive output that provides insights into the alarm configurations on your device. Here’s a breakdown of what the different sections and terms mean:

Pending Alarm Batches

The output may contain a line similar to Pending alarm batches: 23. This indicates the number of batches of alarms that are currently scheduled. A batch is a group of alarms that Android has organized together to optimize battery life by minimizing wakeups. It is important to note that one batch can contain multiple alarms.

Alarm Batch Details

For each batch, you might see details like Batch{4293d3a8 num=1 start=1369361 end=1407261}, where:

  • num=1 indicates the number of alarms in the batch.
  • start and end represent the window of time (in milliseconds since the system boot) in which the alarms in the batch are expected to be triggered.

Individual Alarms

Each alarm in the batch will have its own set of details, such as:

RTC #0: Alarm{4293d358 type 1 com.android.chrome}
type=1 whenElapsed=1369361 when=+19s304ms window=-1 repeatInterval=0 count=0
operation=PendingIntent{429e4500: PendingIntentRecord{429dbbc8 com.android.chrome broadcastIntent}}

Here’s what each part means:

  • RTC #0: The type of the alarm (RTC, RTC_WAKEUP, ELAPSED, or ELAPSED_WAKEUP) and its index within the batch.
  • type=1: The integer value corresponding to the alarm type.
  • whenElapsed: The approximate time since system start when the alarm is expected to trigger.
  • when=+19s304ms: The relative time from when the command was run to when the alarm is set to trigger.
  • window=-1: Indicates the batching strategy used by the alarm.
  • repeatInterval=0: The frequency with which the alarm will repeat. A value of 0 indicates a non-repeating alarm.
  • count=0: The number of times the alarm was expected to trigger but didn’t, typically due to the device being asleep.
  • operation=PendingIntent{…}: The PendingIntent that will be executed when the alarm triggers.

Broadcast Ref Count and Top Alarms

The Broadcast Ref Count indicates if the device is in the middle of sending broadcasts related to alarms. A count of 0 means there are no broadcasts being sent at the moment. The Top Alarms section ranks the top ten alarms by the total time they have run, which can be useful for identifying resource-intensive alarms.

Alarm Stats

This section provides statistics for all alarms that have run since the last system restart. It shows details such as the total system time consumed by the alarm and the number of times it has woken up the device. You can use this section to verify if your alarms are behaving as expected.

Practical Application with Repeato

Understanding the adb shell dumpsys alarm output is crucial for managing alarms in Android applications. If you’re involved in automating tests for Android apps, you might be interested in our product, Repeato. Repeato is a no-code test automation tool that works with a variety of app frameworks, including React Native, Flutter, and Unity. It’s designed to create and run automated tests quickly and efficiently, leveraging computer vision and AI.

Repeato comes with built-in ADB capabilities, allowing you to execute ADB commands directly within your test scripts. This can be especially useful when you need to validate alarm configurations as part of your testing process. Whether you’re ensuring that alarms trigger at the correct times or that your app responds appropriately to them, Repeato can streamline your test automation efforts and help maintain a robust testing routine for your Android applications.

Like this article? there’s more where that came from!