美文网首页
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