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

时间: 2024-10-14 17:44:27

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

Android简易实战教程--第十一话《获取手机所有应用信息Engine类详解》

如果想要获取系统手机应用的详细信息,那么下边代码可以直接作为模板使用.笔者对每一行代码都做了注解,供您参考.直接上代码: package com.example.itydl.engines; import java.io.File; import java.util.ArrayList; import java.util.List; import com.example.itydl.domain.AppBean; import android.content.Context; import an

Android简易实战教程--第二十二话《简单的水平进度条》

本打算写一篇自定义水平进度条,但是出于过度和文章的完整性,今天先来一篇简单的进度条. 需求:按钮点击,实现水平进度条加载进度.而且,进度条设置两个进度(到下边的例子里就能知道什么是"第二进度条"了) 配置文件代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/re

Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》

之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导,声明实际开发中不会用到这两种方式,这里指示提供一种思路和给初学者学习简单的api. 由于内容和之前的基本一样,不做过多的解释.直接上代码: xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi

Android简易实战教程--第二十话《通过广播接收者,对拨打电话外加ip号》

没睡着觉,起来更篇文章吧哈哈!首先祝贺李宗伟击败我丹,虽然我是支持我丹的,但是他也不容易哈哈,值得尊敬的人!切入正题:这一篇来介绍个自定义广播接收者. 通常我们在外拨电话的时候,一般为使用网络电话.如果电话号码是某种类型的电话,会自动在前面加上ip号.从而节省费用.今天这一篇就模拟ip拨号.这个功能,是通过广播接收者来实现的.自定义广播接收者,"监听"外拨电话时候系统发出的广播(系统对我们注册的广播大喊:"亲爱的,我来了!"),收到信息后,给外拨电话前缀价格ip号码

Android简易实战教程--第十五话《在外部存储中读写文件》

第七话里面介绍了在内部存储读写文件 点击打开链接. 这样有一个比较打的问题,假设系统内存不够用,杀本应用无法执行,或者本应用被用户卸载重新安装后.以前保存的用户名和密码都不会得到回显.所以,有必要注意这个问题 因此把文件保存到sd卡中.即今天所写的  第十五话<在外部存储中读写文件> 首先布局文件和第七话一样: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:

Android简易实战教程--第十九话《手把手教您监听EditText文本变化,实现抖动和震动的效果》

监听文本输入情况,仅仅限于土司略显low点,这一篇就稍微"高大上"些,体验一下滚动和震动. 首先,需要两个文件.截图: 两个文件的内容分别如下: cycle_7: <?xml version="1.0" encoding="utf-8"?> <!-- 表示循环的次数 --> <cycleInterpolator xmlns:android="http://schemas.android.com/apk/re

Android简易实战教程--第十话《模仿腾讯手机助手小火箭发射详解》

之前对系统自带的土司的源码做了简要分析,见博客:点击打开链接 这一篇给一个小案例,自定义土司,模拟腾讯卫士的小火箭发射.如果想要迅速看懂代码,建议先去看一下上篇介绍点击打开链接 首先,定义一个服务,在这个服务里面,完成土司的创建(小火箭布局创建) 烟的效果属于动画播放,而且要依托一个activity.(这个activity要定义为透明状态) 定义烟的activity的布局文件 <?xml version="1.0" encoding="utf-8"?>

Android简易实战教程--第十八话《ListView显示,简单的适配器SimpleAdapter》

本篇介绍Listview的显示,对于listview有许多的适配器,如ArrayAdapter,BaseAdapter,SimpleAdapter等等.本篇先热身一下,介绍最简单的SimpleAdapter适配器. 对于安卓界面的显示. 首先在主界面布局文件main.xml加入如下代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http

Android简易实战教程--第十四话《模仿金山助手创建桌面Widget小部件》

打开谷歌api,对widget小部件做如下说明: App Widgets are miniature application views that can be embedded in otherapplications(such as the Home screen) and receive periodic updates. These views arereferred to as Widgets in the user interface,and you can publish one