Android 获取正在运行的进程信息

/**
    * 获取正在运行的进程信息
    *
    * @return
    */
   public static ArrayList<ProcessInfo> getProcessInfo(Context context) {
      // 存放全部信息
      ArrayList<ProcessInfo> infos = new ArrayList<ProcessInfo>();


      // 获取活动管理器
      ActivityManager am = (ActivityManager) context
            .getSystemService(Context.ACTIVITY_SERVICE);


      PackageManager packageManager = context.getPackageManager();


      // 获取正在运行的进程信息
      List<RunningAppProcessInfo> runningAppProcesses = am
            .getRunningAppProcesses();
      // 遍历所有 进程
      for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {
         // 进程名字 一般和包名一样
         String processName = runningAppProcessInfo.processName;
         // 进程的id
         int pid = runningAppProcessInfo.pid;


         Drawable icon = null;
         String name = null;
         long memSize = 0;
         boolean isSys = false;
         try {
            // 获取一个应用的ApplicationInfo 对象
            ApplicationInfo applicationInfo = packageManager
                  .getApplicationInfo(processName, 0);
            icon = applicationInfo.loadIcon(packageManager);// 图片
            name = applicationInfo.loadLabel(packageManager).toString();// 名字


            if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM) {
               // 是系统进程
               isSys = true;
            } else {
               // 是用户进程
               isSys = false;
            }


         } catch (NameNotFoundException e) {
            e.printStackTrace();
            // 包名:am
            // 系统进程
            // 给一些默认值
            name = processName;
            icon = context.getResources().getDrawable(
                  R.drawable.ic_launcher);
            // 认为是系统进程
            isSys = true;
         }


         int[] pids = new int[] { pid };
         // 获取指定pid的进程内存信息 这里可以获取多个
         android.os.Debug.MemoryInfo[] processMemoryInfo = am
               .getProcessMemoryInfo(pids);
         // 获取内存大小
         memSize = processMemoryInfo[0].getTotalPss() * 1024;


         ProcessInfo info = new ProcessInfo(name, icon, memSize, isSys,
               processName);


         infos.add(info);
      }
      return infos;
   }

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴帅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值