Android如何获取设备的总内存RAM?

17

我可以通过以下方式获取可用总内存:

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
memoryInfo.availMem;
然而,如何获取设备的总内存(RAM)?
我确实阅读过:如何在Android中发现我的应用程序的内存使用情况? 但好像添加pidMemoryInfo.getTotalPss()也不能给出总内存。

我猜你可以这样做:'memoryInfo.totalMem'。 - Hamza Mehmood
3个回答

15

试试这个对我有用。

public static String getTotalRAM() {
    RandomAccessFile reader = null;
    String load = null;
    try {
        reader = new RandomAccessFile("/proc/meminfo", "r");
        load = reader.readLine();
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        // Streams.close(reader);
    }
    return load;
}

不,这并不是给出内存大小的RAM,它只是打印然后读取字符串对象,例如“reader is == java.io.RandomAccessFile@413b39c0”。 - Bhanu Sharma
1
为什么注释掉清理代码? - Matt K

3
如果您找不到其他方法,可以绕过Android并阅读/proc/meminfo,这就是更普通的Linux发行版上“free”命令所做的事情。

3

MemoryInfo类在API 16中添加了totalMem属性,请尝试使用。

public long totalMem 自API级别16开始添加 内核可访问的总内存。这基本上是设备的RAM大小,不包括内核以下的固定分配,如DMA缓冲区、基带CPU的RAM等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接