zoukankan      html  css  js  c++  java
  • Android 5.0以上获取系统运行进程信息

    在Android 5.0以上系统,调用getRunningAppProcesses 方法返回的列表为空,这是因为谷歌考虑到安全原因,已经把这个方法移除掉了,

    那以后要获取系统运行的后台进程这个方法用不了了,谷歌了一大把,终于找到了解决的方法,获取系统运行的进程代码如下所示:

     //这是一个实体类,就是描述应用的一些信息
    public
    class TaskInfo { // 应用程序的图标 private Drawable icon; // 应用程序的名字 private String name; // 应用程序的包名 private String packname; // 占用内存的大小 private long memsize; // true 用户进程 false 系统进程 private boolean userTask; //是否已经勾选 private boolean cbchecked; public boolean isCbchecked() { return cbchecked; } public void setCbchecked(boolean cbchecked) { this.cbchecked = cbchecked; } public Drawable getIcon() { return icon; } public void setIcon(Drawable icon) { this.icon = icon; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPackname() { return packname; } public void setPackname(String packname) { this.packname = packname; } public long getMemsize() { return memsize; } public void setMemsize(long memsize) { this.memsize = memsize; } public boolean isUserTask() { return userTask; } public void setUserTask(boolean userTask) { this.userTask = userTask; } @Override public String toString() { return "TaskInfo [icon=" + icon + ", name=" + name + ", packname=" + packname + ", memsize=" + memsize + ", userTask=" + userTask + "]"; } }
    /**
         * 获取系统运行的进程信息
         * 
         * @param context
         * @return
         */
        public static List<TaskInfo> getTaskInfos1(Context context) {
            // 应用程序管理器
            ActivityManager am = (ActivityManager) context
                    .getSystemService(context.ACTIVITY_SERVICE);
    
            // 应用程序包管理器
            PackageManager pm = context.getPackageManager();
    // 获取正在运行的程序信息, 就是以下粗体的这句代码,获取系统运行的进程 要使用这个方法,需要加载

            // import com.jaredrummler.android.processes.ProcessManager;
           // import com.jaredrummler.android.processes.models.AndroidAppProcess;  这两个包, 这两个包附件可以下载

            List<AndroidAppProcess> processInfos = ProcessManager.getRunningAppProcesses();
    
            List<TaskInfo> taskinfos = new ArrayList<TaskInfo>();
            // 遍历运行的程序,并且获取其中的信息
            for (AndroidAppProcess processInfo : processInfos) {
                TaskInfo taskinfo = new TaskInfo();
                // 应用程序的包名
                String packname = processInfo.name;
                taskinfo.setPackname(packname);
                // 湖区应用程序的内存 信息
                android.os.Debug.MemoryInfo[] memoryInfos = am
                        .getProcessMemoryInfo(new int[] { processInfo.pid });
                long memsize = memoryInfos[0].getTotalPrivateDirty() * 1024L;
                taskinfo.setMemsize(memsize);
                try {
                    // 获取应用程序信息
                    ApplicationInfo applicationInfo = pm.getApplicationInfo(
                            packname, 0);
                    Drawable icon = applicationInfo.loadIcon(pm);
                    taskinfo.setIcon(icon);
                    String name = applicationInfo.loadLabel(pm).toString();
                    taskinfo.setName(name);
                    if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
                        // 用户进程
                        taskinfo.setUserTask(true);
                    } else {
                        // 系统进程
                        taskinfo.setUserTask(false);
                    }
                } catch (NameNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    // 系统内核进程 没有名称
                    taskinfo.setName(packname);
                    Drawable icon = context.getResources().getDrawable(
                            R.drawable.default_icon);
                    taskinfo.setIcon(icon);
                }
                if (taskinfo != null) {
                    taskinfos.add(taskinfo);
                }
            }
            return taskinfos;
        }

    以下两个包下载地址如下所示:

    com.jaredrummler.android.processes.ProcessManager;

    com.jaredrummler.android.processes.models.AndroidAppProcess;

    下载地址: http://download.csdn.net/detail/luoyangwyb/9241279

  • 相关阅读:
    Head First 设计模式 --11 代理模式
    spring-boot启动信息中non-fatal error
    在eclipse中用gradle搭建MapReduce项目
    ubuntu14.04 Hadoop单机开发环境搭建MapReduce项目
    Android log日志
    Android studio编译之后显示中文乱码的问题解决办法
    Android官方文档
    Android应用程序中应用图标和名字的设置
    转:java提取图片中的像素
    Android手机开机自动启动
  • 原文地址:https://www.cnblogs.com/luoyangcn/p/4936830.html
Copyright © 2011-2022 走看看