美文网首页
Android 判断当前进程是否主进程

Android 判断当前进程是否主进程

作者: 小白cz | 来源:发表于2019-12-04 14:59 被阅读0次

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 函数就能判断当前进程是否主进程

相关文章

网友评论

      本文标题:Android 判断当前进程是否主进程

      本文链接:https://www.haomeiwen.com/subject/bbclgctx.html