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
Android 5.0以上获取系统运行进程信息的更多相关文章
- Android开发之获取系统所有进程信息。
最近在做一个app,有一个进程管理模块用于管理系统中正在运行的进程,并且可以关闭进程进行加速手机的功能,基本把它实现了出来.界面的效果都是自己写的,虽然有BUG,但是基本上能满足需求,后期我会改进BU ...
- python学习 —— 获取系统运行情况信息并在Linux下设置定时运行python脚本
代码: # -*- coding:utf-8 -*- from psutil import * def cpu_usage_rate(): for i, j in zip(range(1, cpu_c ...
- Delphi编程获取系统当前进程、窗口句柄、文件属性以(转)
Delphi编程获取系统当前进程.窗口句柄.文件属性以及程序运行状态. uses TLHelp32,PsAPI; (1)显示进程列表:procedure TForm1.Button2Click(Sen ...
- System.getProperty()获取系统的配置信息
原文地址:http://www.jsjtt.com/java/Javajichu/105.html 此处记录备用. 1. 通过System.getProperty()可以获取系统的配置信息,Syste ...
- System.getProperty()获取系统的配置信息(系统变量)
原文地址:http://www.jsjtt.com/java/Javajichu/105.html 此处记录备用. 1. 通过System.getProperty()可以获取系统的配置信息,Syste ...
- python获取系统内存占用信息的实例方法
psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控, ...
- C/C++通过WMI和系统API函数获取获取系统硬件配置信息
转载:http://www.cnblogs.com/renyuan/archive/2012/12/29/2838716.html 转载:http://blog.csdn.net/jhqin/arti ...
- Android记录3--ExpandableListView使用+获取SIM卡状态信息
Android记录3--ExpandableListView使用+获取SIM卡状态信息 2013年8月9日Android记录 ExpandableListView是一个可以实现下拉列表的控件,大家可能 ...
- Android如何通过shareduserid获取系统权限
[原文] android会为每个apk进程分配一个单独的空间(比如只能访问/data/data/自己包名下面的文件),一般情况下apk之间是禁止相互访问数据的.通过Shared User id,拥有同 ...
随机推荐
- 阶段2-新手上路\项目-移动物体监控系统\Sprint1-声音报警子系统开发\第1节-Sprint Backlog规划
根据之前的sprint1-声音报警子系统是相对比较大的一个需求,需要把它进一步细化,然后指定sprint Backlog product Backlog是整个产品的功能列表! sprint Backl ...
- C#中的new修饰符说明
new修饰符主要是用来隐藏从基类继承的成员. 这句话怎么理解呢,就是说有一个类,它有一个继承类,继承类中存在和基类中一样名称的成员(属性,方法等). 对继承类中的该成员使用new修饰符时,调用时将会隐 ...
- Ubuntu的apt-get本地源搭配——根据需要自己添加软件作源
试验机器: Ubuntu 12.04.Lubuntu都可,其他版本应该也没问题,服务器ip:192.168.235.133 主机执行步骤: 1.在/var/cache/apt/arch ...
- go培训课程都学什么?xorm框架学习系列(二):xorm结构体映射规则和表操作
上节内容我们学习了基本的xorm框架的知识和基础配置的相关信息.本节课内容我们继续学习相关的知识和相关操作. 名称映射规则 名称映射规则主要负责结构体名称到表名和结构体field到表字段的名称映射. ...
- Python Day22
Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 1.创建Form类 ...
- 跳坑 小程序swiper组件 轮播图片 右边空白问题
swiper 组件 设置轮播图片时,右侧会出现空白的情况:是因为 swiper组件有默认的 高度和宽度,所以我们在设置图片高度和宽度的同时, 也要为 设置高度和宽度,和高度和宽度样式一样的就可以.
- Jmeter 线程组、运行次数参数化(转)Jpara1=4 -Jpara2=5
Jmeter的jmx文件保存了线程数和运行次数等参数,这个参数可以在命令行中传入参数的方式来修改数值 步骤如下 1.生成线程和运行次数的参数 Jmeter选项中函数助手对话框,选中__P参数,这个参数 ...
- Webpack, 现在最流行的模块打包工具.压缩打包
压缩bundle.js 1.把我们项目的代码从es6 -> es5 [babel] 参考:http://babeljs.io/docs/setup/#installation 1.1.安装包 b ...
- 11-----broder(边框)
边框 border:边框的意思,描述盒子的边框 边框有三个要素: 粗细 线性样式 颜色 如果颜色不写,默认是黑色.如果粗细不写,不显示边框.如果只写线性样式,默认的有上下左右 3px的宽度,实体样式, ...
- jquery——属性操作、特殊效果
1. attr().prop() 取出或者设置某个属性的值 <!DOCTYPE html> <html lang="en"> <head> &l ...