package
com.cca.mobilephone.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.cca.mobilephone.domain.ProcessInfo;
/**
* 获取所有正在运行的进程信息
* @author Administrator
*
*/
public
class
TaskInfoProvifer {
public
static
List<processinfo> getRunningProcessInfo(Context context){
List<processinfo> process=
new
ArrayList<processinfo>();
ActivityManager am=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
PackageManager pm=context.getPackageManager();
List<runningappprocessinfo>processrunninginfoinfo=am.getRunningAppProcesses();
for
(RunningAppProcessInfo runninginfo:processrunninginfoinfo){
ProcessInfo processinfo=
new
ProcessInfo();
String packageName=runninginfo.processName;
processinfo.setPackageName(packageName);
long
menSize=am.getProcessMemoryInfo(
new
int
[]{runninginfo.pid})[
0
].
getTotalPrivateDirty()*
1024
;
processinfo.setMenSize(menSize);
try
{
PackageInfo packageinfo=pm.getPackageInfo(packageName,
0
);
Drawable icon=packageinfo.applicationInfo.loadIcon(pm);
processinfo.setIcon(icon);
String processName=packageinfo.applicationInfo.loadLabel(pm).toString();
processinfo.setProcessName(processName);
if
((packageinfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)!=
0
){
processinfo.setUserProcess(
false
);
}
else
{
processinfo.setUserProcess(
true
);
}
}
catch
(NameNotFoundException e) {
e.printStackTrace();
}
process.add(processinfo);
}
return
process;
}
}
</runningappprocessinfo></processinfo></processinfo></processinfo>