安全卫士-----进程的清理
业务类: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 }

浙公网安备 33010602011771号