【发布时间】:2011-01-13 03:41:19
【问题描述】:
我的程序针对的是 Android 1.5。我想检索有关设备本身的系统信息。通过搜索 API,我发现很少有用的类。到目前为止我发现的最好的是Runtime 类和一些Build.* 系统属性。
我希望能够获取设备上的内存总量、可用内存量(我不知道 Runtime 类是否真的给我,因为它专门指内存JVM 可用)以及有关处理器的信息。
这些信息是否可用,如果可以,我在哪里可以找到?
【问题讨论】:
我的程序针对的是 Android 1.5。我想检索有关设备本身的系统信息。通过搜索 API,我发现很少有用的类。到目前为止我发现的最好的是Runtime 类和一些Build.* 系统属性。
我希望能够获取设备上的内存总量、可用内存量(我不知道 Runtime 类是否真的给我,因为它专门指内存JVM 可用)以及有关处理器的信息。
这些信息是否可用,如果可以,我在哪里可以找到?
【问题讨论】:
“总内存量”毫无意义(例如 G1 有 192MB 的物理 RAM,其中 90-100MB 可供内核和跨不同版本的应用程序使用,但这不包括用于窗口的内存缓冲区和其他各种东西,每个 Java 应用程序的堆都有 16MB 的限制,因此系统的可用 RAM 更多的是可以同时运行多少个进程。
“可用内存量”真的毫无意义。我们通常尝试让尽可能多的应用程序保持运行,因为有可用内存,因此在这与普通 Linux 缓存之间通常几乎没有空闲内存。如果您确实查看内核中的原始空闲内存,您会发现随着应用程序启动并使用一些内存,将其向下推,然后其他应用程序被清除,导致它跳回直到缓存和其他东西有机会吞噬它。
此时我想出的查看系统内存状态的最佳方法是 2.0 中引入的“运行服务”UI。是的,底部的记忆信息对大多数人来说非常微妙和毫无意义;我们应该设法弄清楚如何改进它。 :)
您可以通过 android.os.Build.CPU_ABI 了解 NDK 代码的 CPU 架构。这为您提供了 CPU 架构的基线,以及 CPU 是否支持 NEON 指令等信息。对于这类信息,您可以想象使用 NDK 运行一些本机代码来询问 CPU。
【讨论】: