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
Android简易实战教程--第十二话《代码获取手机总运行内存的大小》的更多相关文章
- Android简易实战教程--第十一话《获取手机所有应用信息Engine类详解》
如果想要获取系统手机应用的详细信息,那么下边代码可以直接作为模板使用.笔者对每一行代码都做了注解,供您参考.直接上代码: package com.example.itydl.engines; impo ...
- Android简易实战教程--第二十二话《自定义组合控件模拟qq登录下拉框和其中的一些”小技巧”》
转载此文章请注明出处:点击打开链接 http://blog.csdn.net/qq_32059827/article/details/52313516 首先,很荣幸此专栏能被CSDN推荐到主页.荣 ...
- Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》
之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导, ...
- Android简易实战教程--第二十九话《创建图片副本》
承接第二十八话加载大图片,本篇介绍如何创建一个图片的副本. 安卓中加载的原图是无法对其修改的,因为默认权限是只读的.但是通过创建副本,就可以对其做一些修改,绘制等了. 首先创建一个简单的布局.一个放原 ...
- Android简易实战教程--第二十八话《加载大图片》
Android系统以ARGB表示每个像素,所以每个像素占用4个字节,很容易内存溢出.假设手机内存比较小,而要去加载一张像素很高的图片的时候,就会因为内存不足导致崩溃.这种异常是无法捕获的 内存不足并不 ...
- Android简易实战教程--第二十五话《网络图片查看器》
访问网络已经有了很成熟的框架.这一篇只是介绍一下HttpURLConnection的简单用法,以及里面的"注意点".这一篇可以复习或者学习HttpURLConnection.han ...
- Android简易实战教程--第二十话《通过广播接收者,对拨打电话外加ip号》
没睡着觉,起来更篇文章吧哈哈!首先祝贺李宗伟击败我丹,虽然我是支持我丹的,但是他也不容易哈哈,值得尊敬的人!切入正题:这一篇来介绍个自定义广播接收者. 通常我们在外拨电话的时候,一般为使用网络电话.如 ...
- Android简易实战教程--第二十六话《网络图片查看器在本地缓存》
本篇接第二十五话 点击打开链接 http://blog.csdn.net/qq_32059827/article/details/52389856 上一篇已经把王略中的图片获取到了.生活中有这么 ...
- Android简易实战教程--第十五话《在外部存储中读写文件》
第七话里面介绍了在内部存储读写文件 点击打开链接. 这样有一个比较打的问题,假设系统内存不够用,杀本应用无法执行,或者本应用被用户卸载重新安装后.以前保存的用户名和密码都不会得到回显.所以,有必要注意 ...
随机推荐
- bzoj 3451 Normal
Description 某天WJMZBMR学习了一个神奇的算法:树的点分治! 这个算法的核心是这样的: 消耗时间=0 Solve(树 a) 消耗时间 += a 的 大小 如果 a 中 只有 1 个点 ...
- [BZOJ]4908: [BeiJing2017]开车
Time Limit: 30 Sec Memory Limit: 256 MB Description 你有n辆车,分别a1, a2, ..., an位置和n个加油站,分别在b1, b2, ... ...
- 2015 多校联赛 ——HDU5294(最短路,最小切割)
Tricks Device Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) To ...
- 暗牧 (m)
题目描述在 Dato3 的世界里,英雄们通过对量子力学的研究,发现了世界上其实存在着无数个位面——即是也被称作平行宇宙的存在.位面有无数多个,每个位面中包含 n 颗行星,由 n−1 个虫洞链接.同一个 ...
- 【Codeforces Round #435 (Div. 2) A B C D】
CF比赛题目地址:http://codeforces.com/contest/862 A. Mahmoud and Ehab and the MEX ·英文题,述大意: 输入n,x(n,x& ...
- 【Rain in ACStar HDU-3340】
·你正从AC星球返回,天又下起凸包雨,只好到线段树下躲雨. ·英文题,述大意: 一个竖直平面的美丽天空,会下凸包雨.凸包雨指的是边数为3~6的多边形,并且每一个它都遵守一个神奇定律,那就是 ...
- centos7安装nginx必要环境
安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行 , 在安装nginx前还要安装以下的环境包 一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc ...
- Unix系统的文件打开机构
当打开一个文件时,建立用户与该文件的联系.其实质是将该文件在辅存中的有关目录信息.辅存i节点及相应的文件地址索引表拷贝到主存中.文件系统中管理这一方面的机构成为打开文件管理机构,简称打开文件机构. 打 ...
- 笔记3 装配Bean总结
一.自动化装配bean 1.组件扫描 2.自动装配 CompactDisc.java package Autowiring; public interface CompactDisc { void p ...
- Python中模块之collections系列
collection系列功能介绍 1. 常用的集中类 1. Counter(计数器) 计数器的常用方法如下: 创建一个字典计数器 格式:collections.Counter(obj) 例如:prin ...