A small library to get the current running processes on Android
As of Android 5.0, it has become increasingly difficult to get a list of running apps. getRunningTasks(int)
is now deprecated. Android 5.1.1+ killed getRunningAppProcesses()
(as of Android 5.1.1+ it only returns your app). The documentation hasn't changed and Google is ignoring requests to either update the documentation or restore the original implementation.
Using UsageStatsManager, it is possible to get a list of running apps. However, this requires the user to grant your application special permissions in Settings. It has been reported that some OEMs have removed this setting.
This library gets a list of running apps and doesn't require any permissions. See the sample application for details. Download the sample APK.
Download the latest AAR or grab via Gradle:
compile 'com.jaredrummler:android-processes:1.0.1'
or Maven:
<dependency>
<groupId>com.jaredrummler</groupId>
<artifactId>android-processes</artifactId>
<version>1.0.1</version>
</dependency>
Get a list of RunningAppProcessInfo:
List<ActivityManager.RunningAppProcessInfo> appProcesses = ProcessManager.getRunningAppProcessInfo(context);
Check if your app is in the foreground:
if (ProcessManager.isMyProcessInTheForeground()) {
// do stuff
}
Get running apps and some information about them:
List<AndroidAppProcess> processes = ProcessManager.getRunningAppProcesses();
for (AndroidAppProcess process : processes) {
String processName = process.name;
Stat stat = process.stat();
int pid = stat.getPid();
int parentProcessId = stat.ppid();
long startTime = stat.stime();
int policy = stat.policy();
char state = stat.state();
Statm statm = process.statm();
long totalSizeOfProcess = statm.getSize();
long residentSetSize = statm.getResidentSetSize();
}