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)

私の知る限り、低 RAM デバイスはほとんどがAndroid Oneデバイスになります。デバイスを入手した場所によっては、それらのいずれにも遭遇しない場合があります。

于 2016-08-19T10:45:30.767 に答える