1

我想isLowRamDevice为我的应用程序使用辅助方法,它可以流式传输视频。由于我支持 API 级别 15 的设备,因此我不得不使用ActivityManagerCompat.isLowRamDevice(). 我真的很困惑,即使我使用非常旧的设备,它总是返回 false。然后我检查了方法本身并看到了这个:

    public static boolean isLowRamDevice(@NonNull ActivityManager am) {
        if (Build.VERSION.SDK_INT >= 19) {
            return ActivityManagerCompatKitKat.isLowRamDevice(am);
        }
        return false;
    }

所以难怪它总是在我的 Android 4.0.4 设备上返回 false。但对我来说,这完全没有意义。还是我错过了什么?

4

1 回答 1

7

所以难怪它总是返回 false

它并不总是返回false

在运行 Android 4.3 或更早版本的设备上,它将始终返回false. 那是因为当时不存在作为低 RAM 设备的系统标志。

在运行 Android 4.4 或更高版本的设备上,它将返回系统标志的值,以确定这是否是低 RAM 设备:

/**
 * Returns true if this is a low-RAM device.  Exactly whether a device is low-RAM
 * is ultimately up to the device configuration, but currently it generally means
 * something in the class of a 512MB device with about a 800x480 or less screen.
 * This is mostly intended to be used by apps to determine whether they should turn
 * off certain features that require more RAM.
 */
public boolean isLowRamDevice() {
    return isLowRamDeviceStatic();
}

/** @hide */
public static boolean isLowRamDeviceStatic() {
    return "true".equals(SystemProperties.get("ro.config.low_ram", "false"));
}

(来自ActivityManager代码

AFAIK,低内存设备大多将是Android One设备。根据您获得设备的位置,您可能不会遇到其中之一。

于 2016-08-19T10:45:30.767 回答