Android实现任务管理器

任务管理器可以实现的功能有:

1.查看当前系统下运行的所有的进程

2.可以查看每个进程的进程号、版本号以及内存占用情况

3.杀死进程(可以杀死全部进程或者杀死指定的进程)

4.查看系统剩余内存

效果图:             杀死全部进程

 

Android实现任务管理器

Android实现任务管理器

实现思路:

ActivityManager类可以获取到当前系统的所有进程,以及每个进程的信息,也可以杀死某个进程,

ActivityManager.getRunningAppProcesses();   获取系统的所有进程

ActivityManager.getProcessMemoryInfo(pids);  根据进程号获取每个进程的内存占用情况

ActivityManager.restartPackage(processName) ;  根据进程的包名杀死某个进程


PackageManager可以根据包名获取程序的图标、版本号、名字、权限、签名


核心代码:

/*   * 获取所有进程及用户 的进程   */   protected void initData() {       runningAppProcessInfos =ActivityManager.getRunningAppProcesses(); //获取所有的进程        userRunningAppProcessInfos = new ArrayList<ActivityManager.RunningAppProcessInfo>();//获取用户的进程        for(int i = 0; i< runningAppProcessInfos.size();i++){            if("system".equals(runningAppProcessInfos.get(i).processName)           ||"Android.process.media".equals(runningAppProcessInfos.get(i).processName)           ||"android.process.acore".equals(runningAppProcessInfos.get(i).processName)           ){                continue;            }            userRunningAppProcessInfos.add(runningAppProcessInfos.get(i));       }   }  

注:杀死全部进程实际上杀死的是用户的所有进程,系统进程是无法杀死的,所以这里要获取到用户的所有的进程。

 /*   * 获取某个进程占用的内存信息    */   ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);   int[] pids = {userRunningAppProcessInfos.get(position).pid};   android.os.Debug.MemoryInfo[] memoryInfos =  am.getProcessMemoryInfo(pids);   int memorysize = memoryInfos[0].getTotalPrivateDirty();   tv_app_memory.setText("内存占用为 "+ memorysize +" KB");  

 

public class TaskInfo {       Context context ;       PackageManager pm ;       public TaskInfo(Context context) {           this.context = context;           pm = context.getPackageManager();       }       /*       * 根据包名 查询 图标       */       public Drawable getAppIcon(String packname){         try {                ApplicationInfo info = pm.getApplicationInfo(packname, 0);                 return info.loadIcon(pm);           } catch (NameNotFoundException e) {               // TODO Auto-generated catch block                e.printStackTrace();               return null;           }       }              /*       *获取程序的版本号         */       public String getAppVersion(String packname){                        try {                 PackageInfo packinfo =    pm.getPackageInfo(packname, 0);                 return packinfo.versionName;               } catch (NameNotFoundException e) {                   e.printStackTrace();                   return null;               }       }                 /*       * 获取程序的名字        */       public String getAppName(String packname){             try {                    ApplicationInfo info = pm.getApplicationInfo(packname, 0);                     return info.loadLabel(pm).toString();               } catch (NameNotFoundException e) {                   // TODO Auto-generated catch block                    e.printStackTrace();                   return null;               }       }       /*       * 获取程序的权限       */       public String[] getAppPremission(String packname){             try {                 PackageInfo packinfo =    pm.getPackageInfo(packname, PackageManager.GET_PERMISSIONS);                 //获取到所有的权限                   return packinfo.requestedPermissions;                  } catch (NameNotFoundException e) {                   e.printStackTrace();                   return null;               }       }                     /*       * 获取程序的签名        */       public String getAppSignature(String packname){             try {                 PackageInfo packinfo =    pm.getPackageInfo(packname, PackageManager.GET_SIGNATURES);                 //获取到所有的权限                   return packinfo.signatures[0].toCharsString();                  } catch (NameNotFoundException e) {                   e.printStackTrace();                   return null;               }       }   }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wypwfp.html