/**
-
获取最前端应用的包名
-
PERMISSION_REQUIRED:NULL
-
RESULT:23 com.demo.activitymanager
-
@param context
-
@return
*/
private String getTopAppPackage(Context context) {
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
ComponentName componentName = activityManager.getRunningTasks(1).get(0).topActivity;
return Build.VERSION.SDK_INT + “\n getTopPackage:”
- componentName.getPackageName();
}
获取栈顶Activity及其所属进程
/**
-
获取栈顶Activity及其所属进程
-
PERMISSION_REQUIRED:NULL
-
RESULT:MainActivity,com.demo.activitymanager
-
@param context
-
@return
*/
public static String getTopActivityNameAndProcessName(Context context) {
String processName = null;
String topActivityName = null;
ActivityManager activityManager = (ActivityManager) context
.getSystemService(android.content.Context.ACTIVITY_SERVICE);
List runningTaskInfos = activityManager
.getRunningTasks(1);
if (runningTaskInfos != null) {
ComponentName f = runningTaskInfos.get(0).topActivity;
String topActivityClassName = f.getClassName();
String temp[] = topActivityClassName.split(“\.”);
// 栈顶Activity的名称
topActivityName = temp[temp.length - 1];
int index = topActivityClassName.lastIndexOf(“.”);
// 栈顶Activity所属进程的名称
processName = topActivityClassName.substring(0, index);
}
return “\n\n getTopActivityNameAndProcessName:” + topActivityName + “,”
- processName;
}
获取应用的进程信息
/**
-
获取应用的进程信息
-
PERMISSION_REQUIRED:NULL
-
RESULT:processName=com.demo.activitymanager pid=4317 uid=10311
-
memorySize=1696kb
-
@param context
-
@return
*/
private String getRunningAppProcessInfo(Context context) {
String result = “\n\n getRunningAppProcessInfo:”;
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
// 获得系统里正在运行的所有进程
List runningAppProcessesList = activityManager
.getRunningAppProcesses();
for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcessesList) {
int pid = runningAppProcessInfo.pid; // 进程ID号
int uid = runningAppProcessInfo.uid; // 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 用户ID
String processName = runningAppProcessInfo.processName; // 进程名
int[] pids = new int[] { pid };
Debug.MemoryInfo[] memoryInfo = activityManager
.getProcessMemoryInfo(pids);
int memorySize = memoryInfo[0].dalvikPrivateDirty; // 占用的内存
result += “\n\tprocessName=” + processName + “\tpid=” + pid
- “\tuid=” + uid + “\tmemorySize=” + memorySize + “kb”;
}
return result;
}
是否在前台
/**
-
是否正在前台
-
@return
*/
public boolean isRunningForeground() {
String packageName = getPackageName(this);
String topActivityClassName = getTopActivityName(this);
System.out.println(“packageName=” + packageName
- “,topActivityClassName=” + topActivityClassName);