歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android實現任務管理器

任務管理器可以實現的功能有:

1.查看當前系統下運行的所有的進程

2.可以查看每個進程的進程號、版本號以及內存占用情況

3.殺死進程(可以殺死全部進程或者殺死指定的進程)

4.查看系統剩余內存

效果圖:             殺死全部進程

 

實現思路:

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. }  
Copyright © Linux教程網 All Rights Reserved