Android实现任务管理器


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

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

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

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

4.查看系统剩余内存

效果图:             杀死全部进程

 Android实现任务管理器Android实现任务管理器

实现思路:

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

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

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

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


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


核心代码:

  1. /* 
  2.  * 获取所有进程及用户 的进程 
  3.  */  
  4. protected void initData() {  
  5.     runningAppProcessInfos =ActivityManager.getRunningAppProcesses(); //获取所有的进程   
  6.     userRunningAppProcessInfos = new ArrayList<ActivityManager.RunningAppProcessInfo>();//获取用户的进程   
  7.     for(int i = 0; i< runningAppProcessInfos.size();i++){  
  8.          if("system".equals(runningAppProcessInfos.get(i).processName)  
  9.         ||"Android.process.media".equals(runningAppProcessInfos.get(i).processName)  
  10.         ||"android.process.acore".equals(runningAppProcessInfos.get(i).processName)  
  11.         ){  
  12.              continue;  
  13.          }  
  14.          userRunningAppProcessInfos.add(runningAppProcessInfos.get(i));  
  15.     }  
  16. }  

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

  1.  /* 
  2.  * 获取某个进程占用的内存信息  
  3.  */  
  4. ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);  
  5. int[] pids = {userRunningAppProcessInfos.get(position).pid};  
  6. android.os.Debug.MemoryInfo[] memoryInfos =  am.getProcessMemoryInfo(pids);  
  7. int memorysize = memoryInfos[0].getTotalPrivateDirty();  
  8. tv_app_memory.setText("内存占用为 "+ memorysize +" KB");  
 
  1. public class TaskInfo {  
  2.     Context context ;  
  3.     PackageManager pm ;  
  4.     public TaskInfo(Context context) {  
  5.         this.context = context;  
  6.         pm = context.getPackageManager();  
  7.     }  
  8.     /* 
  9.      * 根据包名 查询 图标 
  10.      */  
  11.     public Drawable getAppIcon(String packname){  
  12.       try {  
  13.              ApplicationInfo info = pm.getApplicationInfo(packname, 0);   
  14.              return info.loadIcon(pm);  
  15.         } catch (NameNotFoundException e) {  
  16.             // TODO Auto-generated catch block   
  17.             e.printStackTrace();  
  18.             return null;  
  19.         }  
  20.     }  
  21.       
  22.     /* 
  23.      *获取程序的版本号   
  24.      */  
  25.     public String getAppVersion(String packname){  
  26.           
  27.           try {  
  28.               PackageInfo packinfo =    pm.getPackageInfo(packname, 0);  
  29.               return packinfo.versionName;  
  30.             } catch (NameNotFoundException e) {  
  31.                 e.printStackTrace();  
  32.                 return null;  
  33.             }  
  34.     }  
  35.       
  36.   
  37.     /* 
  38.      * 获取程序的名字  
  39.      */  
  40.     public String getAppName(String packname){  
  41.           try {  
  42.                  ApplicationInfo info = pm.getApplicationInfo(packname, 0);   
  43.                  return info.loadLabel(pm).toString();  
  44.             } catch (NameNotFoundException e) {  
  45.                 // TODO Auto-generated catch block   
  46.                 e.printStackTrace();  
  47.                 return null;  
  48.             }  
  49.     }  
  50.     /* 
  51.      * 获取程序的权限 
  52.      */  
  53.     public String[] getAppPremission(String packname){  
  54.           try {  
  55.               PackageInfo packinfo =    pm.getPackageInfo(packname, PackageManager.GET_PERMISSIONS);  
  56.               //获取到所有的权限    
  57.               return packinfo.requestedPermissions;  
  58.   
  59.             } catch (NameNotFoundException e) {  
  60.                 e.printStackTrace();  
  61.                 return null;  
  62.             }  
  63.     }  
  64.       
  65.       
  66.     /* 
  67.      * 获取程序的签名  
  68.      */  
  69.     public String getAppSignature(String packname){  
  70.           try {  
  71.               PackageInfo packinfo =    pm.getPackageInfo(packname, PackageManager.GET_SIGNATURES);  
  72.               //获取到所有的权限    
  73.               return packinfo.signatures[0].toCharsString();  
  74.   
  75.             } catch (NameNotFoundException e) {  
  76.                 e.printStackTrace();  
  77.                 return null;  
  78.             }  
  79.     }  
  80. }  
  • 1
  • 2
  • 下一页

相关内容