zoukankan      html  css  js  c++  java
  • 获取手机的process进程数量和手机的可用内存与总内存大小

      1 import java.io.BufferedReader;
      2 import java.io.File;
      3 import java.io.FileInputStream;
      4 import java.io.InputStreamReader;
      5 import java.util.ArrayList;
      6 import java.util.List;
      7 
      8 import android.app.ActivityManager;
      9 import android.app.ActivityManager.RunningAppProcessInfo;
     10 import android.content.Context;
     11 import android.content.pm.ApplicationInfo;
     12 import android.content.pm.PackageManager;
     13 import android.content.pm.PackageManager.NameNotFoundException;
     14 import android.graphics.drawable.Drawable;
     15 import android.os.Debug.MemoryInfo;
     16 
     17 import com.android.hzy.mobilesafe.R;
     18 import com.android.hzy.mobilesafe.domain.TaskInfo;
     19 
     20 public class TaskUtils {
     21 
     22     /**
     23      * 得到当前正在运行的进程的数量
     24      * @param context
     25      * @return
     26      */
     27     public static int getRunningAppProcessInfoSize(Context context){
     28         
     29         ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
     30         return am.getRunningAppProcesses().size();
     31     }
     32     
     33     /**
     34      * 得到当前系统的可用内存
     35      * @param context
     36      * @return
     37      */
     38     public static long getAvailMem(Context context){
     39         
     40         ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
     41         android.app.ActivityManager.MemoryInfo outInfo = new android.app.ActivityManager.MemoryInfo();
     42         am.getMemoryInfo(outInfo);
     43         long availMem = outInfo.availMem;
     44         return availMem;
     45     }
     46     
     47     
     48     /**
     49      * 得到进程所有的信息
     50      * @param context
     51      * @return
     52      */
     53     public static List<TaskInfo> getTaskInfos(Context context){
     54         
     55         List<TaskInfo> taskInfos = new ArrayList<TaskInfo>();
     56         
     57         PackageManager pm = context.getPackageManager();
     58         ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
     59         List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
     60         for (RunningAppProcessInfo info : runningAppProcesses) {
     61             
     62             TaskInfo taskInfo = new TaskInfo();
     63             
     64             String packageName = info.processName;
     65             taskInfo.setPackageName(packageName);
     66             try {
     67                 ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
     68                 Drawable task_icon = appInfo.loadIcon(pm);
     69                 String task_name = appInfo.loadLabel(pm).toString();
     70                 if(task_icon == null){
     71                     // 系统应用有的可能没有图标  设置一个默认的图标
     72                     taskInfo.setTask_icon(context.getResources().getDrawable(R.drawable.ic_launcher));
     73                 }else{
     74                     taskInfo.setTask_icon(task_icon);
     75                 }
     76                 taskInfo.setTask_name(task_name);
     77                 
     78             } catch (NameNotFoundException e) {
     79                 // TODO Auto-generated catch block
     80                 e.printStackTrace();
     81                 taskInfo.setTask_icon(context.getResources().getDrawable(R.drawable.ic_launcher));
     82                 taskInfo.setTask_name(packageName);
     83             }
     84             
     85             int pid = info.pid;
     86             taskInfo.setPid(pid);
     87             
     88             MemoryInfo[] memoryInfos = am.getProcessMemoryInfo(new int[]{pid});
     89             MemoryInfo memoryInfo = memoryInfos[0];
     90             long totalMem = memoryInfo.getTotalPrivateDirty(); //总内存 KB单位
     91             taskInfo.setTask_memeory(totalMem);
     92             
     93             taskInfos.add(taskInfo);
     94         }
     95         
     96         return taskInfos;
     97     }
     98     
     99     /**
    100      * 获取手机的总内存
    101      * @param context
    102      * @return
    103      */
    104     public static long getTotalRam(Context context){
    105         
    106         try {
    107             File file = new File("/proc/meminfo");
    108             FileInputStream fis = new FileInputStream(file);
    109             BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    110             String totalRam = br.readLine();
    111             StringBuffer sb = new StringBuffer();
    112             char[] cs = totalRam.toCharArray();
    113             for (char c : cs) {
    114                 if(c>='0' && c<='9'){
    115                     sb.append(c);
    116                 }
    117             }
    118             long result = Long.parseLong(sb.toString())*1024;
    119             return result;
    120         } catch (Exception e) {
    121             // TODO Auto-generated catch block
    122             e.printStackTrace();
    123             return 0;
    124         }
    125         
    126     }
    127 }
  • 相关阅读:
    WebSocket理解与使用
    JS面向对象与prototype,__proto__,constructor
    JS值传递与引用传递
    vue报错:./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!
    对于图片视频编辑类产品的思考
    时尚衣裙外贸独立站搭建(一)
    2021年Wordpress手把手教你做个独立站——部署篇
    一次备案失败所引发的思考
    2021年Wordpress博客装修美化(二)
    做什么,怎么做?(20210615)
  • 原文地址:https://www.cnblogs.com/androidez/p/2931510.html
Copyright © 2011-2022 走看看