import java.util.ArrayList;
import java.util.List;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.drawable.Drawable;
import com.example.mobilesafe.R;
import com.home.bean.ProcessInfo;
/**
* 进程信息的业务类
*
* @author HQ
*
*/
public class ProcessInfoProvider {
public static List<ProcessInfo> getRunningProcessInfos(Context context) {
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
PackageManager pm = context.getPackageManager();
List<RunningAppProcessInfo> infos = am.getRunningAppProcesses();
List<ProcessInfo> list = new ArrayList<ProcessInfo>();
for (RunningAppProcessInfo info : infos) {
ProcessInfo processInfo = new ProcessInfo();
String packName = info.processName;
processInfo.setPackName(packName);
long memSize = am.getProcessMemoryInfo(new int[] { info.pid })[0]
.getTotalPrivateDirty() * 1024;
processInfo.setMemSize(memSize);
try {
PackageInfo packInfo = pm.getPackageInfo(packName, 0);
Drawable appIcon = packInfo.applicationInfo.loadIcon(pm);
processInfo.setAppIcon(appIcon);
String appName = packInfo.applicationInfo.loadLabel(pm)
.toString();
processInfo.setAppName(appName);
if ((packInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {// 系统进程
processInfo.setUserProcess(false);
} else {// 用户进程
processInfo.setUserProcess(true);
}
} catch (NameNotFoundException e) {
e.printStackTrace();
processInfo.setAppName(packName);
processInfo.setAppIcon(context.getResources().getDrawable(R.drawable.ic_launcher));
}
list.add(processInfo);
}
return list;
}
}
业务bean
package com.home.bean;
import android.graphics.drawable.Drawable;
/**
* 进程信息的数据实体
*
* @author HQ
*
*/
public class ProcessInfo {
/**
* 进程图标,应用程序图标
*/
private Drawable appIcon;
/**
* 应用程序的包名
*/
private String appName;
/**
* 内存占用的大小
*/
private String packName;
/**
* 内存占用的大小
*/
private long memSize;
/**
* 是否是用户进程
*/
private boolean userProcess;
public Drawable getAppIcon() {
return appIcon;
}
public void setAppIcon(Drawable appIcon) {
this.appIcon = appIcon;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
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 isUserProcess() {
return userProcess;
}
public void setUserProcess(boolean userProcess) {
this.userProcess = userProcess;
}
@Override
public String toString() {
return "ProcessInfo [appName=" + appName + ", packName=" + packName
+ ", memSize=" + memSize + ", userProcess=" + userProcess + "]";
}
}