WhatsRunning shows you what's running on your device, which includes:
Almost everything about native processes:
Details about framework, system and user apps:
These details are definitely going to clear many of your confusions you might have since ever about Android's memory management e.g.
Init (native) and framework (Java) services which keep on running forever.
Apps which start on device boot.
Wake Locks / Wakeup Calls
Apps which have been keeping the device awake. Also a count showing how many times an app awoke the device from sleep.
A list of the apps running in foreground and/or background longer than the others.
A service notification showing current state of battery including battery level, temperature, (dis)charge rate, estimated time, average drain rate with display on, off and in doze mode.
See screenshots for more details.
A service notification showing count of running / dead processes and system / user alive apps. See Process Watcher for more details.
Also see Github README.
For more verbose details, please see screenshots.
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.
Did you ever wonder:
Which apps are not sleeping when you are sleeping? And they keep on starting and dying, and doing their work without your knowledge? When do they start, which components they use, for how long they are running, how much resources they use, and when they die?
Or which app or process is misbehaving on your device, killed and started again and again, wasting your precious battery and other resources? How may times did it restart in the last 24 hours?
Or which process looks like an alien, a malware, a threat to your privacy?
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.
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
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.
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:
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:
Enable Android debugging in Developer options.
Connect the device to the PC with a USB cable.
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:
Disconnect the USB cable from the device.
Connect your device and PC to a common Wi-Fi network.
Get the IP address of the device (usually in Wi-Fi settings or in Settings -> About), say it's
On PC run:
adb connect 192.168.1.1
adb shell id -u
It should print
Connect WhatsRunning to ADB:
Run WhatsRunning app and check ADB Shell in drawer. Enter port
5555 and tap connect.
Allow USB Debugging if asked.
Leave the Android debugging enabled.
For more details see this.
On Android 11 and above, it's possible to turn on Wireless Debugging without connecting to a PC.
Connect your device to a Wi-Fi network.
Open WhatsRunning and Developer Options in Split-Screen mode. See instructions above how to unhide Developer Options.
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.
Open Wireless debugging and tap on "Pair device with pairing code". Note the pairing code and port number.
In WhatsRunning check ADB Shell in drawer, enter both parameters in the shown fields, and tap pair.
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 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.
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.
Use with ADB. Please do read the note at the start. There are some limitations; more on some devices, less on others.
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.
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.
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.
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
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.
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).