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

来源:互联网 发布:node.js和php哪个简单 编辑:程序博客网 时间:2024/05/17 12:00

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

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

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

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

    代码如下:

    [html] view plain copy
    print?在CODE上查看代码片派生到我的代码片
    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. }  
    其实如果是获取剩余内存;把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?在CODE上查看代码片派生到我的代码片
    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. }  

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


    1
    0
     
     

    我的同类文章

    http://blog.csdn.net
    • Android 相关属性2017-05-09
    • Android ImageView,ImageButton的scaleType属性与adjustViewBounds属性2017-04-28
    • Android简易实战教程--第五十二话《满屏拖动的控件2》2017-01-22
    • Android简易实战教程--第五十话《动画扫描》2017-01-02
    • Activity的四种启动模式任务栈图解2016-12-24
    • Android简易实战教程--第四十九话《满屏拖动的控件》2016-12-20
    • ViewStub基本用法2017-04-28
    • 源码分析初级《篇一》 为何建议使用LayoutInflater.from而不用View.inflate2017-02-22
    • Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》2017-01-03
    • Android Studio精彩案例(六)《使用一个Demo涵盖补间动画所有知识》2017-01-02
    • Android隐式启动Activity可能存在的坑2016-12-24
    更多文章
    阅读全文
    0 0
    原创粉丝点击