在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

Android 5.0以上获取系统运行进程信息的更多相关文章

  1. Android开发之获取系统所有进程信息。

    最近在做一个app,有一个进程管理模块用于管理系统中正在运行的进程,并且可以关闭进程进行加速手机的功能,基本把它实现了出来.界面的效果都是自己写的,虽然有BUG,但是基本上能满足需求,后期我会改进BU ...

  2. python学习 —— 获取系统运行情况信息并在Linux下设置定时运行python脚本

    代码: # -*- coding:utf-8 -*- from psutil import * def cpu_usage_rate(): for i, j in zip(range(1, cpu_c ...

  3. Delphi编程获取系统当前进程、窗口句柄、文件属性以(转)

    Delphi编程获取系统当前进程.窗口句柄.文件属性以及程序运行状态. uses TLHelp32,PsAPI; (1)显示进程列表:procedure TForm1.Button2Click(Sen ...

  4. System.getProperty()获取系统的配置信息

    原文地址:http://www.jsjtt.com/java/Javajichu/105.html 此处记录备用. 1. 通过System.getProperty()可以获取系统的配置信息,Syste ...

  5. System.getProperty()获取系统的配置信息(系统变量)

    原文地址:http://www.jsjtt.com/java/Javajichu/105.html 此处记录备用. 1. 通过System.getProperty()可以获取系统的配置信息,Syste ...

  6. python获取系统内存占用信息的实例方法

    psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控, ...

  7. C/C++通过WMI和系统API函数获取获取系统硬件配置信息

    转载:http://www.cnblogs.com/renyuan/archive/2012/12/29/2838716.html 转载:http://blog.csdn.net/jhqin/arti ...

  8. Android记录3--ExpandableListView使用+获取SIM卡状态信息

    Android记录3--ExpandableListView使用+获取SIM卡状态信息 2013年8月9日Android记录 ExpandableListView是一个可以实现下拉列表的控件,大家可能 ...

  9. Android如何通过shareduserid获取系统权限

    [原文] android会为每个apk进程分配一个单独的空间(比如只能访问/data/data/自己包名下面的文件),一般情况下apk之间是禁止相互访问数据的.通过Shared User id,拥有同 ...

随机推荐

  1. hadoop主节点(NameNode)备份策略以、恢复方法、操作步骤

    一.dits和fsimage      首先要提到两个文件edits和fsimage,下面来说说他们是做什么的. 集群中的名称节点(NameNode)会把文件系统的变化以追加保存到日志文件edits中 ...

  2. 2、linux-compress and uncompresse

    1.单个文件 压缩 解压 gzip file1  gzip -d file1.gz或者gunzip file1.gz #file1文件即会被压缩为 file1.gz,file1原文件删除:解压后同样删 ...

  3. BSGS(大小步)算法

    BSGS算法主要用于求解形如ax≡b(mod p)的式子中x的值. 在这里我们不妨设 x=k1*n-k2 这时我们就可以将式子转化为 ak1*n≡b*ak2(mod p) 这里的n我们设为√p,所以我 ...

  4. 6.7 安装ant

    准备好安装包: 安装vim: 解压: tar -xzvf apahce-ant-1.10.1-bin.tar.gz 这里,我将apache-ant-1.10.1-bin.tar.gz复制并解压到了/h ...

  5. java的大小端和转换

    一直以为大小端针对的bit的顺序,今天才知道:大小端的分度值是 byte,即每一个byte都是按照正常顺序,但是byte组装成一个int 或者是 long等时每个byte的摆放位置不同. 测试代码: ...

  6. codeforces 367B

    题目代码到是不难但是很难想通题目的解决方法. #include<iostream> using namespace std; ]; int main() { int n,m; while( ...

  7. HTML5+JavaScript动画基础 完整版 中文pdf扫描版

    <HTML5+JavaScript动画基础>包括了基础知识.基础动画.高级动画.3D动画和其他技术5大部分,分别介绍了动画的基本概念.动画的JavaScript基础.动画中的三角学.渲染技 ...

  8. Gson应用:从json格式简单字符串中获取value

    import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; i ...

  9. Spark 中的 RPC 的几个类

    Spark 中 RPC 部分的涉及了几个类,有点晕,在此记录一下 1. RpcEndpoint: RPC的一个端点.给定了相应消息的触发函数.保证  `onStart`, `receive` and ...

  10. JMeter - 如何测试REST API / 微服务

    概述: 有许多方法和工具可用于测试REST API.当我需要测试REST API时,在查看了各种工具和选项之后,由于以下原因,我选择了JMeter. JMeter是免费和开源的. JMeter可以从C ...