您的位置:首页 > 移动开发 > Android开发

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

2016-08-03 17:48 731 查看

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

标签:
api手机内存androidRAM

2016-08-03 17:48
877人阅读 评论(0)
收藏
举报

本文章已收录于:


分类:
Android(189)




作者同类文章X

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

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

代码如下:

[html]
view plain
copy

print?





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;  
    }  
}  



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内存详细信息
    

详细信息截图如下:



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

[html]
view plain
copy

print?





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;  
    }  
}  



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
 
 
上一篇Android简易实战教程--第十一话《获取手机所有应用信息Engine类详解》

下一篇Android初级教程:单击事件的传递机制初谈

我的同类文章

Android(189)

http://blog.csdn.net
Android 相关属性2017-05-09阅读19

Android ImageView,ImageButton的scaleType属性与adjustViewBounds属性2017-04-28阅读124

Android简易实战教程--第五十二话《满屏拖动的控件2》2017-01-22阅读122

Android简易实战教程--第五十话《动画扫描》2017-01-02阅读1973

Activity的四种启动模式任务栈图解2016-12-24阅读390

Android简易实战教程--第四十九话《满屏拖动的控件》2016-12-20阅读608

ViewStub基本用法2017-04-28阅读30

源码分析初级《篇一》 为何建议使用LayoutInflater.from而不用View.inflate2017-02-22阅读135

Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》2017-01-03阅读222

Android Studio精彩案例(六)《使用一个Demo涵盖补间动画所有知识》2017-01-02阅读606

Android隐式启动Activity可能存在的坑2016-12-24阅读2294

更多文章
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 安卓