-
@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; // 用户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);
if (packageName != null && topActivityClassName != null
&& topActivityClassName.startsWith(packageName)) {
return true;
} else {
return false;
}
}
public String getTopActivityName(Context context) {
String topActivityClassName = null;
ActivityManager activityManager = (ActivityManager) (context
.getSystemService(android.content.Context.ACTIVITY_SERVICE));
// android.app.ActivityManager.getRunningTasks(int maxNum)
// int maxNum—>The maximum number of entries to return in the list
// 即最多取得的运行中的任务信息(RunningTaskInfo)数量
List runningTaskInfos = activityManager
.getRunningTasks(1);
if (runningTaskInfos != null) {
ComponentName f = runningTaskInfos.get(0).topActivity;
topActivityClassName = f.getClassName();
}
return topActivityClassName;
}
public String getPackageName(Context context) {
String packageName = context.getPackageName();
return packageName;
}
判断服务是否在运行中
/**
-
判断服务是否在运行中
-
@param context
-
@param serviceName
-
@return
*/
private boolean isServiceRunning(Context context, String serviceName) {
if (!TextUtils.isEmpty(serviceName) && context != null) {
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!