爱玺玺

爱玺玺的生活日记本。wx:lb87626

android获取进程信息engine

package cn.jianhaozhan.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.PackageManager;

import android.content.pm.PackageManager.NameNotFoundException;

import android.graphics.drawable.Drawable;

import android.os.Debug.MemoryInfo;


import cn.jianhaozhan.bean.TaskInfo;


public class TaskEngine {

    public static List<TaskInfo> getTaskAllInfo(Context context){

    List<TaskInfo> list=new ArrayList<TaskInfo>();

    //进程管理者

    ActivityManager activityManager=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

    PackageManager pm=context.getPackageManager();

    //获取所有正在运行的进程信息

    List<RunningAppProcessInfo> runningAppProcessInfos=activityManager.getRunningAppProcesses();

    //遍历集合

    for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcessInfos) {

    TaskInfo taskInfo=new TaskInfo();

//获取相应信息

    //获取进程名称,和包名一样

    String packageName = runningAppProcessInfo.processName;

    taskInfo.setPackageName(packageName);

    //获取进程所占用的内存空间,int[] pids:输入几个进程的pid就返回几个进程所占用的空间,可以返回多个进程所占用的空间

    MemoryInfo[] memoryInfo = activityManager.getProcessMemoryInfo(new int[]{runningAppProcessInfo.pid});

    int totalPss = memoryInfo[0].getTotalPss();//获取一个以kb为单位的内存占用空间大小

    long ramSize=totalPss*1024;//获取到进程占用空间大小,以byte为单位

    taskInfo.setRamSize(ramSize);

    //根据app的报名获取application信息

    try {

ApplicationInfo applicationInfo=pm.getApplicationInfo(packageName, 0);

//获取图标

Drawable icon=applicationInfo.loadIcon(pm);

taskInfo.setIcon(icon);

//获取名称

String name = applicationInfo.loadLabel(pm).toString();

taskInfo.setName(name);

//获取程序的所有标签信息,是否是系统程序是以标签形式展示

int flags = applicationInfo.flags;

//判断是否是用户程序

boolean isUser;

if ((applicationInfo.FLAG_SYSTEM&flags)==applicationInfo.FLAG_SYSTEM) {

//系统程序

isUser=false;

}else{

//用户程序

isUser=true;

}

taskInfo.setUser(isUser);

} catch (NameNotFoundException e) {

e.printStackTrace();

}

    //保存信息

list.add(taskInfo);

}

    return list;

    }

}


发表评论:

Powered By Z-BlogPHP 1.4 Deeplue Build 150101

Copyright Your WebSite.Some Rights Reserved.

蜀ICP备11021721号-5