您的位置:首页 > 移动开发 > Android开发

android 获取process,service,me…

2014-04-18 11:58 169 查看
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++){

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: