Android简易实战教程--第十二话《代码获取手机总运行内存的大小》

Android简易实战教程--第十二话《代码获取手机总运行内存的大小》

标签: api手机内存androidRAM
877人阅读 评论(0) 收藏 举报
本文章已收录于:
分类:

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

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

代码如下:

  1. public class TaskManagerEngine {  
  2.     //获取总内存大小  
  3.     public static long getTotalMemorySize(Context context){  
  4.         long size = 0;  
  5.         //获取ActivityManager管理,要获取【运行相关】的信息,与运行相关的信息有关  
  6.         ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);  
  7.         MemoryInfo outInfo = new MemoryInfo();//outInfo对象里面包含了内存相关的信息  
  8.         activityManager.getMemoryInfo(outInfo);//把内存相关的信息传递到outInfo里面C++思想  
  9.           
  10.         size = outInfo.totalMem;  
  11.           
  12.         //通过读取配置文件方式获取总内大小。文件目录:/proc/meminfo  
  13.           
  14.         return size;  
  15.     }  
  16. }  
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内存详细信息
    

详细信息截图如下:

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

  1. public class TaskManagerEngine {  
  2.     //获取总内存大小  
  3.     public static long getTotalMemorySize(Context context){  
  4.         long size = 0;  
  5.           
  6.         //通过读取配置文件方式获取总内大小。文件目录:/proc/meminfo  
  7.         File file = new File("/proc/meminfo");  
  8.         try {  
  9.             BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));  
  10.             //根据命令行可以知道,系统总内存大小位于第一行  
  11.             String totalMemarysizeStr = reader.readLine();//MemTotal:         513744 kB     
  12.             //要获取大小,对字符串截取  
  13.             int startIndex = totalMemarysizeStr.indexOf(':');  
  14.             int endIndex = totalMemarysizeStr.indexOf('k');  
  15.             //截取  
  16.             totalMemarysizeStr = totalMemarysizeStr.substring(startIndex + 1, endIndex).trim();  
  17.             //转为long类型,得到数据单位是kb  
  18.             size = Long.parseLong(totalMemarysizeStr);  
  19.             //转为以byte为单位  
  20.             size *= 1024;  
  21.         } catch (Exception e) {  
  22.             // TODO Auto-generated catch block  
  23.             e.printStackTrace();  
  24.         }  
  25.         return size;  
  26.     }  
  27. }  
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


1
0
 
 
我的同类文章
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值