安全卫士-----进程的清理

业务类:ProcessManagerEngine

导入包:

 1 package com.bw.antiVirusApp.engine;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.File;
 5 import java.io.FileInputStream;
 6 import java.io.FileNotFoundException;
 7 import java.io.InputStreamReader;
 8 import java.util.ArrayList;
 9 import java.util.List;
10 
11 import com.bw.antiVirusApp.bean.ProcessBean;
12 
13 import android.R.integer;
14 import android.app.Activity;
15 import android.app.ActivityManager;
16 import android.app.ActivityManager.MemoryInfo;
17 import android.app.ActivityManager.RunningAppProcessInfo;
18 import android.content.Context;
19 import android.content.pm.ApplicationInfo;
20 import android.content.pm.PackageInfo;
21 import android.content.pm.PackageManager;
22 import android.content.pm.PackageManager.NameNotFoundException;

管理进程的类

 1 /*
 2  * 进程的管理
 3  */
 4 public abstract class ProcessManagerEngine 
 5 {
 6   /*
 7     * 获取总内存的大小
 8     */
 9     public static long getTotalMemSize(Context context)
10     {  
11     return null;
12     }
13     
14  /*
15  * 获取可用内存大小
16  */
17    public static long getAvailMemSize(Context context)
18    {
19     return null;
20    }
21     /*
22       * 返回系统所有运行中进程数据
23     */
24     public static List<ProcessBean>  getAllRuningProcessInfos(Context context) 
25   {
26     return null;
27   }
28 }

 

获取总内存的大小

 

 1 public static long getTotalMemSize(Context context)
 2     {
 3         long size=0;
 4         //方法一:api版本必须在16以上
 5         //Activity管理器,获取运行着的activity的相关信息
 6         /*ActivityManager am=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
 7         MemoryInfo outInfo=new MemoryInfo();
 8         //获取内存信息必须在16以上
 9         am.getMemoryInfo(outInfo);//outInfo:存放了内存的信息
10         size=outInfo.totalMem;//totalMem所有的内存*/
11         
12         //方法二:
13         File file=new File("/proc/meminfo");
14         try {
15             BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
16             String totalMeminfo=reader.readLine();
17             int startIndex=totalMeminfo.indexOf(':');
18             int endIndex=totalMeminfo.indexOf('k');
19             totalMeminfo=totalMeminfo.substring(startIndex+1, endIndex).trim();
20             //将字符型转化成long,再转化成字节
21             size=Long.parseLong(totalMeminfo)*1024;
22         } catch (Exception e) {
23             // TODO Auto-generated catch block
24             e.printStackTrace();
25         }
26         return size;
27     }

 

 

获取可用内存大小

 1 public static long getAvailMemSize(Context context)
 2     {
 3         long size=0;
 4         ActivityManager am=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
 5         MemoryInfo outInfo=new MemoryInfo();
 6         //获取内存大小必须在16aip以上,可用内存,没有级别限制
 7         am.getMemoryInfo(outInfo);//outInfo:存放了内存的信息
 8         size=outInfo.availMem;
 9         return size;
10     }

 

返回系统所有运行中进程数据

 

 1 public static List<ProcessBean>  getAllRuningProcessInfos(Context context) 
 2     {
 3         List<ProcessBean> list=new ArrayList<ProcessBean>();
 4         ActivityManager am=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
 5         //获取运行中的进程
 6          List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
 7          for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) 
 8          {
 9             ProcessBean bean=new ProcessBean();
10             
11             //apk的包名
12             String packName=runningAppProcessInfo.processName;
13             bean.setPackName(packName);
14             
15             //获取图标和名字
16             //1.获取包管理器
17             PackageManager pm=context.getPackageManager();
18             PackageInfo packageInfo = null;
19             try
20             {
21                 //2.通过包名找到ApplicationInfo
22                 packageInfo= pm.getPackageInfo(packName, 0);
23             } catch (NameNotFoundException e) {
24                 // TODO Auto-generated catch block
25                 e.printStackTrace();
26             }
27             ApplicationInfo applicationInfo = packageInfo.applicationInfo;
28             //3.通过ApplicationInfo的信息找到图标。。。
29             bean.setIcon(applicationInfo.loadIcon(pm));
30             bean.setName(applicationInfo.loadLabel(pm)+"");
31             int flags = applicationInfo.flags;//该程序拥有的所有属性
32             //是否是系统自带apk
33             if ((flags & applicationInfo.FLAG_SYSTEM)!=0) {
34                 //系统自带APP
35                 bean.setSystem(true);            
36             }else {
37                 bean.setSystem(false);
38             }    
39             
40             //获取占用内存大小,获取占用内存的信息
41             //pids:进程的id编号。参数是int[],返回值是MemoryInfo[]
42             int pid=runningAppProcessInfo.pid;
43             android.os.Debug.MemoryInfo[] memoryInfos=
44                     am.getProcessMemoryInfo(new int[]{pid});
45             
46             long totalPrivateDirty=memoryInfos[0].getTotalPrivateDirty()*1024;
47             bean.setMemSize(totalPrivateDirty);
48             
49             list.add(bean);
50         }
51         return list;
52     }

 

posted @ 2018-06-12 09:58  安琪儿。流苏  阅读(84)  评论(0)    收藏  举报