android 获取process,service,memory,task的信息
来源:互联网 发布:文言文字典软件 编辑:程序博客网 时间:2024/05/21 17:12
package com.pig.message.info;
import java.util.List;import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.ActivityManager.RunningServiceInfo;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.os.Debug;
private ActivityManager activityManager = null;
public AppInformation(Context context){
this.activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
}
public boolean isAppRunning(String packagename){
System.out.println("appIsRunning()...");
return false;
}
public int killProcessByName(String killProcessName){
System.out.println("killProcessByName()...");
int killNum = 0;
List appProcessList = activityManager.getRunningAppProcesses();
for(int i=0; i<appProcessList.size(); i++){
RunningAppProcessInfo appProcessInfo = (RunningAppProcessInfo) appProcessList.get(i);
//进程ID
int pid = appProcessInfo.pid;
//用户ID,类似于Linux的权限不同,ID也就不同, 比如root
int uid = appProcessInfo.uid;
//进程名,默认是包名或者由属性android:process=""指定
String processName = appProcessInfo.processName;
//获得该进程占用的内存
int[] memPid = new int[]{ pid };
//此MemoryInfo位于android.os.Debug.MemoryInfo包中,用来统计进程的内存信息
Debug.MemoryInfo[] memoryInfo = activityManager.getProcessMemoryInfo(memPid);
//获取进程占内存用信息kb单位
int memSize = memoryInfo[0].dalvikPrivateDirty;
System.out.println("process name: " + processName + " pid: " + pid + " uid: " + uid + " memory size is -->" + memSize + "kb");
//获得每个进程里运行的应用程序(包),即每个应用程序的包名
String[] packageList = appProcessInfo.pkgList;
for(String pkg : packageList){
System.out.println("package name " + pkg + " in process id is -->" + pid);
}
if(killProcessName.equals(processName)){
System.out.println("===============killProcess pid-->" + pid);
android.os.Process.killProcess(pid);
killNum++;
}
}
return killNum;
}
public long getSystemAvaialbeMemorySize(){
MemoryInfo memoryInfo = new MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
long memSize = memoryInfo.availMem;
System.out.println("getSystemAvaialbeMemorySize()...memory size: " + memSize);
return memSize;
//调用系统函数,字符串转换long -String KB/MB
//return Formatter.formatFileSize(context, memSize);
}
public List getRunningAppProcessInfo(){
System.out.println("getRunningAppProcessInfo()...");
List appProcessList = activityManager.getRunningAppProcesses();
for(int i=0; i<appProcessList.size(); i++){
RunningAppProcessInfo appProcessInfo = (RunningAppProcessInfo) appProcessList.get(i);
//进程ID
int pid = appProcessInfo.pid;
//用户ID,类似于Linux的权限不同,ID也就不同, 比如root
int uid = appProcessInfo.uid;
//进程名,默认是包名或者由属性android:process=""指定
String processName = appProcessInfo.processName;
//获得该进程占用的内存
int[] memPid = new int[]{ pid };
//此MemoryInfo位于android.os.Debug.MemoryInfo包中,用来统计进程的内存信息
Debug.MemoryInfo[] memoryInfo = activityManager.getProcessMemoryInfo(memPid);
//获取进程占内存用信息kb单位
int memSize = memoryInfo[0].dalvikPrivateDirty;
System.out.println("process name: " + processName + " pid: " + pid + " uid: " + uid + " memory size is -->" + memSize + "kb");
//获得每个进程里运行的应用程序(包),即每个应用程序的包名
String[] packageList = appProcessInfo.pkgList;
for(String pkg : packageList){
System.out.println("package name " + pkg + " in process id is -->" + pid);
}
}
return appProcessList;
}
public List getRunningServiceInfo(){
System.out.println("getRunningServiceInfo()...");
List serviceList = activityManager.getRunningServices(30);
for(int i=0; i<serviceList.size(); i++){
RunningServiceInfo serviceInfo = (RunningServiceInfo) serviceList.get(i);
//进程ID
int pid = serviceInfo.pid;
//用户ID,类似于Linux的权限不同,ID也就不同, 比如root
int uid = serviceInfo.uid;
//进程名,默认是包名或者由属性android:process=""指定
String processName = serviceInfo.process;
String serviceStr = serviceInfo.toString();
System.out.println("serviceStr: " + serviceStr);
//获得该进程占用的内存
int[] memPid = new int[]{ pid };
//此MemoryInfo位于android.os.Debug.MemoryInfo包中,用来统计进程的内存信息
Debug.MemoryInfo[] memoryInfo = activityManager.getProcessMemoryInfo(memPid);
//获取进程占内存用信息kb单位
int memSize = memoryInfo[0].dalvikPrivateDirty;
System.out.println("The name of the process this service runs in: " + processName + " pid: " + pid + " uid: " + uid + " memory size is -->" + memSize + "kb");
}
return serviceList;
}
public List getRunningTaskInfo(){
System.out.println("getRunningServiceInfo()...");
List taskList = activityManager.getRunningTasks(30);
for(int i=0; i<taskList.size(); i++){
RunningTaskInfo taskInfo = (RunningTaskInfo) taskList.get(i);
String packageName = taskInfo.baseActivity.getPackageName();
System.out.println("package name: " + packageName);
}
return taskList;
}
}
0 0
- android 获取process,service,memory,task的信息
- android 获取process,service,memory,task的信息
- android 获取process,service,memory,task的信息,可以kill的哦
- Android -- 获取正在运行的service信息
- android 获取process,service,me…
- android 获取process,service,me…
- Android TASK 和 PROCESS的区别,获取最近运行的程序和正在运行的进程
- Android Application,Task和Process的区别
- Android app、process和task的区别
- Activity, Service,Task, Process and Thread之间的关系
- Activity, Service,Task, Process and Thread之间的关系
- Activity, Service,Task, Process and Thread之间的关系
- Activity, Service,Task, Process and Thread之间的关系
- Activity, Service,Task, Process and Thread之间的关系
- Activity、Service、Task、Process和Thread的关系
- starting to launch local task to process map join maximum memory =1029701632 的原因
- Android中TASK和PROCESS的区别,获取最近运行的程序和正在运行的进程
- Android中TASK和PROCESS的区别,获取最近运行的程序和正在运行的进程
- 浅谈java的23种设计模式
- Hibernate Spatial 中加入 SQL Server2008的配置
- bzoj 2761: [JLOI2011]不重复数字 排序
- golang 接力棒玩法 小例子
- Unity3d学习笔记-无限循环滚动背景(完整的商店广告牌组件)
- android 获取process,service,memory,task的信息
- hive PURGE关键字
- CentOS 7最小化安装对系统初始化
- ReactNative教程 — Hello React Native
- HTTP状态码详解
- Starteam 的备份与恢复
- hibernate连接MySQL数据库,insert中文时乱码问题解决
- Masonry 解析
- 防止移动硬盘休眠脚本