【问题标题】:Retrieving Device Information on Android在 Android 上检索设备信息
【发布时间】:2011-01-13 03:41:19
【问题描述】:

我的程序针对的是 Android 1.5。我想检索有关设备本身的系统信息。通过搜索 API,我发现很少有用的类。到目前为止我发现的最好的是Runtime 类和一些Build.* 系统属性。

我希望能够获取设备上的内存总量、可用内存量(我不知道 Runtime 类是否真的给我,因为它专门指内存JVM 可用)以及有关处理器的信息。

这些信息是否可用,如果可以,我在哪里可以找到?

【问题讨论】:

    标签: java android


    【解决方案1】:

    “总内存量”毫无意义(例如 G1 有 192MB 的物理 RAM,其中 90-100MB 可供内核和跨不同版本的应用程序使用,但这不包括用于窗口的内存缓冲区和其他各种东西,每个 Java 应用程序的堆都有 16MB 的限制,因此系统的可用 RAM 更多的是可以同时运行多少个进程。

    “可用内存量”真的毫无意义。我们通常尝试让尽可能多的应用程序保持运行,因为有可用内存,因此在这与普通 Linux 缓存之间通常几乎没有空闲内存。如果您确实查看内核中的原始空闲内存,您会发现随着应用程序启动并使用一些内存,将其向下推,然后其他应用程序被清除,导致它跳回直到缓存和其他东西有机会吞噬它。

    此时我想出的查看系统内存状态的最佳方法是 2.0 中引入的“运行服务”UI。是的,底部的记忆信息对大多数人来说非常微妙和毫无意义;我们应该设法弄清楚如何改进它。 :)

    您可以通过 android.os.Build.CPU_ABI 了解 NDK 代码的 CPU 架构。这为您提供了 CPU 架构的基线,以及 CPU 是否支持 NEON 指令等信息。对于这类信息,您可以想象使用 NDK 运行一些本机代码来询问 CPU。

    【讨论】:

    • 这个应用程序是为 Android 1.5 设计的,以允许跨设备的最大兼容性,这是我无法控制的约束。使用 Build.CPU_ABI 不是一个选项(从 1.6 开始可用),也不是在 2.0 中引入的 UI。我需要总内存量和可用内存量来报告有关设备的统计信息,即使这些值在任何实际情况下都毫无价值。我会考虑使用 NDK,但我的印象是它的功能相当有限,主要用于简化计算密集型操作。
    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多