android 獲取process,service,me…

package com.pig.message.info;

import java.util.List;

import android.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 class AppInformation {
 private ActivityManager activityManager = null;
 
 public AppInformation(Context context){
  this.activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
 }
 
 public boolean isAppRunning(String packagename){
  System.out.println("appIsRunning()...");
  
  return false;
 }
 
 public int killProcessByName(String killProcessName){
  System.out.println("killProcessByName()...");
  
  int killNum = 0;
  List appProcessList = activityManager.getRunningAppProcesses();
  
  for(int i=0; i<appProcessList.size(); i++){
   RunningAppProcessInfo appProcessInfo = (RunningAppProcessInfo) appProcessList.get(i);
   //進程ID
   int pid = appProcessInfo.pid;
   //用戶ID,類似於Linux的權限不同,ID也就不同, 比如root
   int uid = appProcessInfo.uid;
   //進程名,默認是包名或者由屬性android:process=""指定
   String processName = 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("process name: " + processName + " pid: " + pid + " uid: " + uid + " memory size is -->" + memSize + "kb");
   
   //獲得每個進程裏運行的應用程序(包),即每個應用程序的包名   
   String[] packageList = appProcessInfo.pkgList;
   for(String pkg : packageList){
    System.out.println("package name " + pkg + " in process id is -->" + pid);
   }
   
   if(killProcessName.equals(processName)){
    System.out.println("===============killProcess pid-->" + pid);
    android.os.Process.killProcess(pid);
    killNum++;
   }
  }
  return killNum;
 }
 
 public long getSystemAvaialbeMemorySize(){
  MemoryInfo memoryInfo = new MemoryInfo();
  activityManager.getMemoryInfo(memoryInfo);
  long memSize = memoryInfo.availMem;
  
  System.out.println("getSystemAvaialbeMemorySize()...memory size: " + memSize);
  
  return memSize;
  
  //調用系統函數,字符串轉換long -String KB/MB
  //return Formatter.formatFileSize(context, memSize);
 }
 
 public List getRunningAppProcessInfo(){
  System.out.println("getRunningAppProcessInfo()...");
  
  List appProcessList = activityManager.getRunningAppProcesses();
  
  for(int i=0; i<appProcessList.size(); i++){
   RunningAppProcessInfo appProcessInfo = (RunningAppProcessInfo) appProcessList.get(i);
   //進程ID
   int pid = appProcessInfo.pid;
   //用戶ID,類似於Linux的權限不同,ID也就不同, 比如root
   int uid = appProcessInfo.uid;
   //進程名,默認是包名或者由屬性android:process=""指定
   String processName = 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("process name: " + processName + " pid: " + pid + " uid: " + uid + " memory size is -->" + memSize + "kb");
   
   //獲得每個進程裏運行的應用程序(包),即每個應用程序的包名   
   String[] packageList = appProcessInfo.pkgList;
   for(String pkg : packageList){
    System.out.println("package name " + pkg + " in process id is -->" + pid);
   }
   
  }
  
  return appProcessList;
 }
 
 public List getRunningServiceInfo(){
  System.out.println("getRunningServiceInfo()...");
  
  List serviceList = activityManager.getRunningServices(30);
  
  for(int i=0; i<serviceList.size(); i++){
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章