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,拥有同 ...
随机推荐
- HTML5-A*寻路算法
设置起点 设置终点 设置障碍 清除障碍 允许斜向跨越
- Hadoop中Partition的定制
1.解析Partition Map的结果,会通过partition分发到Reducer上,Reducer做完Reduce操作后,通过OutputFormat,进行输出,下面我们就来分析参与这个过程的类 ...
- 关于login/interactive/no-interactive shell和profile/bash_profile/bashrc
login shell:第一次登录进系统时的shell,一般是指本机启动时的控制台shell或者ssh远程登录时的shell. interactive shell:登录以后,再打开控制台时运行的she ...
- CodeForces 279B Books (滑动窗口)
题意:给定n本书的阅读时间,然后你从第 i 本开始阅读,问你最多能看多少本书在给定时间内. 析:就是一个滑动窗口的水题. 代码如下: #pragma comment(linker, "/ST ...
- SqlDataReader
using (mycon) { //using语句与try catch finally结合使用 mycon.Open(); // MessageBox.Show("dakai"); ...
- MVC5手工添加System.Web.Optimization
VS2012web手工添辑一个空的mvC5的项目,添加EF6的支持,在别的项目里复制了母版页_Layout.cshtml过来,发现Styles.Render未引用,这个引用使用的命名空间是System ...
- etcd代理组件的开发思想
最近在一个项目中,需要使用到etcd集群来实现服务发现的功能,目的是统一管理相应的服务资源,同时也可对资源做一定的负载均衡策略.然而,项目中使用的技术栈是C++语言,github上没有合适的C++开源 ...
- 网络请求返回HTTP状态码(404,400,500)
HTTP状态码(HTTP Status Code) 一些常见的状态码为: - 服务器成功返回网页 - 请求的网页不存在 - 服务不可用 所有状态解释: 1xx(临时响应) 表示临时响应并需要请求者继续 ...
- 有关UPDATE操作的一些想法
我们平常写代码的时候,无疑都会接触大量的数据CURD操作.第一反应是这太简单了,那么你在编写UPDATE操作的时候是怎样的逻辑呢?比较下面两段伪代码: code exp.1 $SQL = " ...
- Gradle用户使用指南
转载请事先沟通,未经允许,谢绝转载. 1. 新工具介绍(Introduction) 能够复用代码和资源能够构建几种不同版本参数的应用能够配置.扩展.自定义构建过程1.1 为什么选择Gradle(Why ...