Contents

What does WhatsRunning do?

WhatsRunning shows you what's running on your device, which includes:

Also see Github README.

Process Details

  1. Process name (commandline)
  2. PID
  3. UID / GID
  4. CPU usage
  5. RAM / swap usage
  6. Android app packages count
  7. App tasks (activities) count
  8. App services count
  9. Process age

For more verbose details, please see screenshots.

More Details

Alarms

  1. App name
  2. If the alarm will wake up the device
  3. When will alarm fire

Scheduled Jobs

  1. App name
  2. UID
  3. Job service name
  4. Conditions which must meet before the job is run

Auto-Starting Apps

  1. App name
  2. Broadcast receiver(s) name
  3. UID

Wake Locks

  1. App name
  2. UID
  3. Wake lock name
  4. Duration (for how long the lock was held)
  5. Count (how many times the lock was held)

Wakeup Calls

  1. App name
  2. UID
  3. Alarm name which woke up the device
  4. App package name
  5. Wakeup count

Battery Hogs

  1. App name
  2. UID
  3. CPU and network usage
  4. App's active usage duration
  5. App's foreground (high priority) and background (low priority) activity duration
  6. Started services total duration
  7. Started services count
  8. Started service (shown only if enabled in drop-down menu)
  9. App name
  10. Service name
  11. Started service duration
  12. Service start count

You can filter out the processes and apps you are not interested in.

There's a long list of keywords you can use to search the specific things in the process list you are concerned about.

And an even longer list of parameters you can apply to sort the process list.

Process Watcher

Did you ever wonder:

Process Watcher is a single and simple answer to all of these questions. It keeps running in the background with your consent, watching processes continuously. A notification is persistently showing a brief summary of the processes life and death.

You tap on the notification or "Show watcher data" menu item to see which processes have started and stopped since the watcher was started. Simple!

Use the menu items to see the list of all processes or those with some change in their state.

PID field shows how many times the process has been recreated since the watcher started.

In this mode an average consumption of resources (CPU, RAM etc.) is shown for every process instead of the instantaneous values.


Please note that due to the limitations of common Android devices, Process Watcher is not a realtime Linux process tracker. So it can miss very short-lived processes. If you are interested in the technical details, please read this great article: The Difficulties of Tracking Running Processes on Linux.

Integration with PMX

WhatsRunning is integrated with PMX so you can open one from the other.

So from WhatsRunning you can switch to PMX to find out what permissions a running (or dead) app is granted.

Similarly, from PMX you can switch to WhatsRunning to find out if an app with restricted permissions is still running. If yes, in what state it is and how much resources it is using.

This is particularly helpful when analyzing the effect of permissions like RUN_IN_BACKGROUND.

Using WhatsRunning with ADB

Limitations of ADB

ADB is not as powerful as root is. In our case, for instance, WhatsRunning takes more time to build the list of processes when it's running with ADB.

Additionally, on some OEM ROMs the ADB functionality might be crippled due to lacking permissions or other restrictions. You can check the current status of what ADB can do in About -> Privileges (menu item):

Unfortunately we cannot do anything about it. And therefore some features are available only on rooted devices.

Specifically the following information is available only on rooted devices:

However some OEMs add extra settings to control ADB's privileges. For instance "Disable Permission Monitoring" on Oppo phones and "Allow granting permissions" in Security Settings on Xiaomi phones. See this question for more details.

The following instructions apply to near-AOSP ROMs. Customized ROMs might have different or missing settings.


Android 10 and below

So here we start how you can make WhatsRunning work with ADB.

If your device is not rooted, you need to turn Wireless ADB on before using WhatsRunning. Some devices have ADB over Network or Wireless Debugging setting available in Developer options:

If you don't have this setting on your device, you need to connect the device to a USB host like PC once after every reboot.

Unhide Developer options screen:

  1. Go to Settings -> About and tap Build number five to seven times.

    Developer options should appear directly under Settings or in Settings -> System at the bottom.

Enable wireless debugging:

  1. Enable Android debugging in Developer options.

  2. Connect the device to the PC with a USB cable.

  3. On PC open a terminal window (or command prompt on Windows) and run:

    adb tcpip 5555

    You must have adb executable available on your PC to run the above command. If not, here's the download link.

Optional steps for verification:

  1. Disconnect the USB cable from the device.

  2. Connect your device and PC to a common Wi-Fi network.

  3. Get the IP address of the device (usually in Wi-Fi settings or in Settings -> About), say it's 192.168.1.1.

  4. On PC run:

    adb connect 192.168.1.1

  5. Run again:

    adb shell id -u

    It should print 2000 (or 0).

Connect WhatsRunning to ADB:

  1. Run WhatsRunning app and check ADB Shell in drawer. Enter port 5555 and tap connect.

  2. Allow USB Debugging if asked.

Leave the Android debugging enabled.

For more details see this.


Android 11 and above

On Android 11 and above, it's possible to turn on Wireless Debugging without connecting to a PC.

  1. Connect your device to a Wi-Fi network.

  2. Open WhatsRunning and Developer Options in Split-Screen mode. See instructions above how to unhide Developer Options.

  3. Enable Wireless debugging and Disable ADB authorization timeout in Developer Options. The latter ensures that you don't have to repeat the next two steps (pairing) again and again.

  4. Open Wireless debugging and tap on "Pair device with pairing code". Note the pairing code and port number.

  5. In WhatsRunning check ADB Shell in drawer, enter both parameters in the shown fields, and tap pair.

  6. After successful pairing now it's time to connect. Enter the new port number from Wireless debugging in the shown field and tap connect.

Now you can leave the Wireless debugging enabled. Or better disable it and leave the USB debugging enabled.

If you entirely turn off the debugging in Developer options, or after every reboot, you need to repeat the last step.

For more details see this.

WhatsRunning Versions

WhatsRunning is available in two variants: Free and Pro. Both flavors are available as Play Store and GitHub / Telegram releases. All four variants have different package names, so can be installed simultaneously.

See screenshots for more details.

FAQs


Why WhatsRunning requires root or ADB access?

Android won't allow a normal user app to read the process information of other apps, even not completely of its own.

That's why we run a separate process with high privileges to circumvent the restrictions.

By default, the background process (daemon) is run with ADB UID (2000) or (if rooted) System UID (1000). On rooted devices UID can be changed in Advanced Settings.


My device isn't rooted. How can I use WhatsRunning?

Use with ADB. Please do read the note at the start. There are some limitations; more on some devices, less on others.


Why WhatsRunning requires INTERNET permission?

INTERNET permission is required to make use of ADB over network. The only connections made outside the device are to check for updates (which you can disable in app settings) and to fetch help contents (this webpage).

Pro version also requires INTERNET permission for license verification.


How much privacy friendly WhatsRunning is?

We are not interested in you or your device at all. We do not spy on you. We do not collect your data in any way, not even the crash logs. We believe in our users being educated, well-informed, and in-charge of their privacy. WhatsRunning strengthens you to protect your privacy.

You may also want to see our Privacy Policy.


What are "Orphan Activities / Services"?

When an app is running in background and is not in active usage, the Android operating system may kill its native process at any stage e.g. to spare RAM or to preserve other resources. But its Activities (the visible part) and Services may still be kept in record so that to resume at a later stage. Such components are labeled as "orphan" in WhatsRunning.


What's the difference between "CPU Usage" and "CPU Impact" in sorting?

CPU Impact is simply the time a process spends while using the CPU. CPU Usage is the ratio of CPU time to the age of process.

For details see utime, stime and starttime fields under /proc/[PID]/stat in proc(5).

So the processes with high CPU Usage and long life, or the processes with high CPU impact and short life should be considered battery hogs.

These are just two different ways to analyze and identify the culprits.


Why do I see "Process does not exist" toast?

It means that the process, or the app, or its component that you have tapped is not currently running, or is filtered out (in Process Filter).

Downloads / Screenshots

Please visit Github README.


Rate / Review

Rate and review the Pro version and the Free version on Play Store.

Rate and review on APKPure.

Write a review on XDA.

Give a star on Github.


Have more questions?

Please contact us via email or Telegram.