GitHub传送门 代码实现
判断过程
获取当前App所有进程
- 获取过程
/**
* 获取当前App所有进程
*/
public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcessInfos(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
return am.getRunningAppProcesses()
}
判断该进程ID是否属于该进程名
- 判断过程需要提供 进程ID & 进程名
/**
* 判断该进程ID是否属于该进程名
* @param context
* @param pid 进程ID
* @param p_name 进程名
* @return true属于该进程名
*/
public boolean isPidOfProcessName(Context context, int pid, String p_name) {
if (p_name == null)
return false;
boolean isMain = false;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//遍历所有进程
for (ActivityManager.RunningAppProcessInfo process : am.getRunningAppProcesses()) {
if (process.pid == pid) {
//进程ID相同时判断该进程名是否一致
if (process.processName.equals(p_name)) {
isMain = true;
}
break;
}
}
return isMain;
}
获取主进程名
/**
* 获取主进程名
* @param context 上下文
* @return 主进程名
*/
public String getMainProcessName(Context context) throws PackageManager.NameNotFoundException {
return context.getPackageManager().getApplicationInfo(context.getPackageName(), 0).processName;
}
判断是否主进程
- 通过 当前进程ID & 主进程名 判断当前进程是否主进程
/**
* 判断是否主进程
* @param context 上下文
* @return true是主进程
*/
public boolean isMainProcess(Context context) throws PackageManager.NameNotFoundException {
return isPidOfProcessName(context, Process.myPid(), getMainProcessName(context));
}
通过 isMainProcess 函数就能判断当前进程是否主进程
网友评论