zoukankan      html  css  js  c++  java
  • Android简易实战教程--第十二话《代码获取手机总运行内存的大小》

    手机RAM存储,类似于电脑的内存。这一篇,对通过代码获取手机总内存大小做详细介绍。

    首先,定义一个engine类,这个类功能就是获取进程信息,包括运行的程序个数,系统总内存,系统剩余总内存。本篇先完成获取总内存。

    代码如下:

    public class TaskManagerEngine {
    	//获取总内存大小
    	public static long getTotalMemorySize(Context context){
    		long size = 0;
    		//获取ActivityManager管理,要获取【运行相关】的信息,与运行相关的信息有关
    		ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
    		MemoryInfo outInfo = new MemoryInfo();//outInfo对象里面包含了内存相关的信息
    		activityManager.getMemoryInfo(outInfo);//把内存相关的信息传递到outInfo里面C++思想
    		
    		size = outInfo.totalMem;
    		
    		//通过读取配置文件方式获取总内大小。文件目录:/proc/meminfo
    		
    		return size;
    	}
    }
    其实如果是获取剩余内存;把size=outinfo.totalMem改为size=outinfo.avaliMem就可以了。而且不会报错。但是,但是上边的程序会报错,原因在于,只支持api16级别以上手机。显然这样对于低版本用户是不可行的。那么久另辟蹊径,另一种方式获取手机总内存大小——文件获取。该文件是proc目录

    对于文件获取,首先通过inux指令,看那个文件有内存的详细信息

    linux指令如下:

                cd /proc
                ls 进入该目录
                ls -l查看详细信息
                cat cupinfo 查看cpuinfo里面的详细信息
                cat meminfo 查看meminfo内存详细信息
        

    详细信息截图如下:

    第一行位置,就是系统中总内存的大小。根据这个文件信息,可以获取到总内存大小了。方式如下:

    public class TaskManagerEngine {
    	//获取总内存大小
    	public static long getTotalMemorySize(Context context){
    		long size = 0;
    		
    		//通过读取配置文件方式获取总内大小。文件目录:/proc/meminfo
    		File file = new File("/proc/meminfo");
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    			//根据命令行可以知道,系统总内存大小位于第一行
    			String totalMemarysizeStr = reader.readLine();//MemTotal:         513744 kB   
    			//要获取大小,对字符串截取
    			int startIndex = totalMemarysizeStr.indexOf(':');
    			int endIndex = totalMemarysizeStr.indexOf('k');
    			//截取
    			totalMemarysizeStr = totalMemarysizeStr.substring(startIndex + 1, endIndex).trim();
    			//转为long类型,得到数据单位是kb
    			size = Long.parseLong(totalMemarysizeStr);
    			//转为以byte为单位
    			size *= 1024;
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return size;
    	}
    }
    

    这样返回的大小就是手机运行内存的大小了。单元测试得到数据:526073856


  • 相关阅读:
    C语言第三天,《常量指针和指针常量》
    树莓派系统烧入总结
    c 语言第一天
    7. Vue
    6. Vue
    5. Vue
    4. Vue
    3. Vue
    1. Vue
    2. Vue
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299628.html
Copyright © 2011-2022 走看看