AndroidProcesses
A small library to get the current running processes on Android
Why would I need this?
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.
Usage
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();
}
Download
Download the latest AAR or grab via Gradle:
compile 'com.jaredrummler:android-processes:1.0.2'
or Maven:
<dependency>
<groupId>com.jaredrummler</groupId>
<artifactId>android-processes</artifactId>
<version>1.0.2</version>
<type>aar</type>
</dependency>
License
Copyright (C) 2015, Jared Rummler
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.