android 获取process,service,me…

来源:互联网 发布:centos 6 sz 编辑:程序博客网 时间:2024/06/01 18:01

packagecom.pig.message.info;

importjava.util.List;

importandroid.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.ActivityManager.RunningServiceInfo;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.os.Debug;

public classAppInformation {
 private ActivityManager activityManager =null;
 
 public AppInformation(Context context){
  this.activityManager =(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
 }
 
 public boolean isAppRunning(Stringpackagename){
  System.out.println("appIsRunning()...");
  
  return false;
 }
 
 public int killProcessByName(StringkillProcessName){
  System.out.println("killProcessByName()...");
  
  int killNum = 0;
  List appProcessList =activityManager.getRunningAppProcesses();
  
  for(int i=0;i<appProcessList.size(); i++){
   RunningAppProcessInfoappProcessInfo = (RunningAppProcessInfo)appProcessList.get(i);
   //进程ID
   int pid =appProcessInfo.pid;
   //用户ID,类似于Linux的权限不同,ID也就不同,比如root
   int uid =appProcessInfo.uid;
   //进程名,默认是包名或者由属性android:process=""指定
   StringprocessName = appProcessInfo.processName;
   //获得该进程占用的内存
   int[] memPid= new int[]{ pid };
   //此MemoryInfo位于android.os.Debug.MemoryInfo包中,用来统计进程的内存信息
   Debug.MemoryInfo[]memoryInfo =activityManager.getProcessMemoryInfo(memPid);
   //获取进程占内存用信息kb单位
   int memSize =memoryInfo[0].dalvikPrivateDirty;
   
   System.out.println("processname: " + processName + " pid: " + pid + " uid: " + uid + " memorysize is -->" + memSize + "kb");
   
   //获得每个进程里运行的应用程序(包),即每个应用程序的包名   
   String[]packageList = appProcessInfo.pkgList;
   for(Stringpkg : packageList){
    System.out.println("packagename " + pkg + " in process id is -->" +pid);
   }
   
   if(killProcessName.equals(processName)){
    System.out.println("===============killProcesspid-->" + pid);
    android.os.Process.killProcess(pid);
    killNum++;
   }
  }
  return killNum;
 }
 
 public longgetSystemAvaialbeMemorySize(){
  MemoryInfo memoryInfo = newMemoryInfo();
  activityManager.getMemoryInfo(memoryInfo);
  long memSize =memoryInfo.availMem;
  
  System.out.println("getSystemAvaialbeMemorySize()...memorysize: " + memSize);
  
  return memSize;
  
  //调用系统函数,字符串转换long -StringKB/MB
  //returnFormatter.formatFileSize(context, memSize);
 }
 
 public List getRunningAppProcessInfo(){
  System.out.println("getRunningAppProcessInfo()...");
  
  List appProcessList =activityManager.getRunningAppProcesses();
  
  for(int i=0;i<appProcessList.size(); i++){
   RunningAppProcessInfoappProcessInfo = (RunningAppProcessInfo)appProcessList.get(i);
   //进程ID
   int pid =appProcessInfo.pid;
   //用户ID,类似于Linux的权限不同,ID也就不同,比如root
   int uid =appProcessInfo.uid;
   //进程名,默认是包名或者由属性android:process=""指定
   StringprocessName = appProcessInfo.processName;
   //获得该进程占用的内存
   int[] memPid= new int[]{ pid };
   //此MemoryInfo位于android.os.Debug.MemoryInfo包中,用来统计进程的内存信息
   Debug.MemoryInfo[]memoryInfo =activityManager.getProcessMemoryInfo(memPid);
   //获取进程占内存用信息kb单位
   int memSize =memoryInfo[0].dalvikPrivateDirty;
   
   System.out.println("processname: " + processName + " pid: " + pid + " uid: " + uid + " memorysize is -->" + memSize + "kb");
   
   //获得每个进程里运行的应用程序(包),即每个应用程序的包名   
   String[]packageList = appProcessInfo.pkgList;
   for(Stringpkg : packageList){
    System.out.println("packagename " + pkg + " in process id is -->" +pid);
   }
   
  }
  
  returnappProcessList;
 }
 
 public List getRunningServiceInfo(){
  System.out.println("getRunningServiceInfo()...");
  
  List serviceList =activityManager.getRunningServices(30);
  
  for(int i=0;i<serviceList.size(); i++){
   RunningServiceInfoserviceInfo = (RunningServiceInfo) serviceList.get(i);
   //进程ID
   int pid =serviceInfo.pid;
   //用户ID,类似于Linux的权限不同,ID也就不同,比如root
   int uid =serviceInfo.uid;
   //进程名,默认是包名或者由属性android:process=""指定
   StringprocessName = serviceInfo.process;
      
   StringserviceStr = serviceInfo.toString();
   System.out.println("serviceStr:" + serviceStr);
   
   //获得该进程占用的内存
   int[] memPid= new int[]{ pid };
   //此MemoryInfo位于android.os.Debug.MemoryInfo包中,用来统计进程的内存信息
   Debug.MemoryInfo[]memoryInfo =activityManager.getProcessMemoryInfo(memPid);
   //获取进程占内存用信息kb单位
   int memSize =memoryInfo[0].dalvikPrivateDirty;
   
   System.out.println("Thename of the process this service runs in: " + processName + " pid:" + pid + " uid: " + uid + " memory size is -->" +memSize + "kb");
   
  }
  
  return serviceList;
 }
 
 public List getRunningTaskInfo(){
  System.out.println("getRunningServiceInfo()...");
  
  List taskList =activityManager.getRunningTasks(30);
  
  for(int i=0;i<taskList.size(); i++){
   RunningTaskInfotaskInfo = (RunningTaskInfo) taskList.get(i);
   StringpackageName = taskInfo.baseActivity.getPackageName();
   
   System.out.println("packagename: " + packageName);
   
  }
  
  return taskList;
 }
 
}

0 0
原创粉丝点击