获取手机内所有正在运行的进程processinfo

这个Java类提供了一系列静态方法,用于获取Android设备上的系统信息,包括当前运行的进程列表、每个进程的内存使用情况、运行任务的数量以及设备的总内存和可用内存。通过ActivityManager和PackageManager服务,可以获取到应用的包名、应用名、图标以及进程是否为系统进程等详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class SystemInfoUtils {
    //获取所有的进程
    public static List<processinfo> getrunningprocessinfo(Context context) {
        List<processinfo> list = new ArrayList<>();
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

        PackageManager pm = context.getPackageManager();
        List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo info : runningAppProcesses) {
            processinfo processinfo = new processinfo();
            String processName = info.processName;
            int i = am.getProcessMemoryInfo(new int[]{info.pid})[0].getTotalPrivateDirty() * 1024;
            processinfo.setMemsize(i);
            try {
                PackageInfo packageInfo = pm.getPackageInfo(processName, 0);
                String appname = packageInfo.applicationInfo.loadLabel(pm).toString();
                Drawable icon = packageInfo.applicationInfo.loadIcon(pm);
                String packageName = packageInfo.packageName;
                processinfo.setPackname(packageName);
                processinfo.setAppname(appname);
                processinfo.setIcon(icon);
                if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
                    //系统进程
                    processinfo.setUsertask(false);

                } else {
                    //用户进程
                    processinfo.setUsertask(true);
                }
            } catch (PackageManager.NameNotFoundException e) {
                processinfo.setAppname("进程");
                processinfo.setIcon(context.getResources().getDrawable(R.mipmap.save));
                e.printStackTrace();
            }
            list.add(processinfo);

        }


        return list;
    }

    //获取正在运行的进程数量
    public static int getrunningtask(Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
        return runningAppProcesses.size();
    }

    //获取内存信息
    public static long getAvailram(Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        ActivityManager.MemoryInfo outinfo = new ActivityManager.MemoryInfo();
        am.getMemoryInfo(outinfo);
        return outinfo.availMem;
    }

    public static long getTotalram(Context context) {
//         第一种 这种低版本获取不到
//        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//        ActivityManager.MemoryInfo outinfo = new ActivityManager.MemoryInfo();
//        am.getMemoryInfo(outinfo);
//        return outinfo.totalMem;
//       第二种
        try {
            File file = new File("/proc/meminfo");
            FileInputStream stream = new FileInputStream(file);
            BufferedReader br = new BufferedReader(new InputStreamReader(stream));
            String line = br.readLine();
            StringBuffer sb = new StringBuffer();
            for (char c : line.toCharArray()) {
                if (c >= '0' && c <= '9') {
                    sb.append(c);
                }

            }
            return Long.parseLong(sb.toString()) * 1024;


        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值