package com.home.engine;
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 + "]"; } }
转载请注明原文地址: https://ju.6miu.com/read-1300982.html