2016-08-19 10 views
0

ビデオをストリームする私のアプリケーションにヘルパーメソッドisLowRamDeviceを使いたかったのです。 APIレベル15のデバイスをサポートしているので、私はActivityManagerCompat.isLowRamDevice()を使用しなければなりませんでした。 私は本当に古いデバイスを使用していても、いつも偽を返すということは本当に混乱していました。次に、メソッド自体をチェックし、これを見ました:私のAndroid 4.0.4デバイスで常にfalseを返すのは不思議ではありません。しかし、私にとってこれは絶対に意味がありません。または私は何かを逃していますか?ActivityManagerCompat.isLowRamDeviceは役に立たず、常にfalseを返します

答えて

2

だから、常にfalse

を返すのも不思議ではそれは常にfalseを返しません。

Android 4.3以降を実行している端末では、常にfalseが返されます。これは、低RAMデバイスであるためのシステムフラグがそれ以前に存在しなかったためです。アンドロイド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")); 
} 

the ActivityManager source codeから)

私の知る限り、低RAMデバイスはほとんどAndroid Oneデバイスになります。デバイスを入手する場所によっては、そのうちの1つに遭遇することはありません。

+0

確かにAndroid 4.3以降を搭載しているデバイスはlowRamDevicesです。では、なぜ彼らはサポートlib経由で古いデバイスでこの方法を利用できるようにしたのですか?これはまったく意味がありません。 – JensJensen

+0

@ JensJensen:Android 4.3以降を搭載したデバイスの方がlowRamDevicesの可能性が高いです。低RAMデバイスのGoogleの定義によるものではありません。 "なぜ彼らはサポートlib経由で古いデバイスでこの方法を利用できるようにしたのですか?" - ほとんどの '... Compat'で終わるすべてのクラスはこのように動作します。互換性のあるデバイスの実際の実装にコールし、古いデバイスのスタブを返します。時々、スタブはより洗練されています。この場合、実際のデバイスRAMに基づいて値を導出する必要があることに同意します。 – CommonsWare

+0

実装は他のサポートライブラリと一貫しています。古いデバイスをlow-ramとして扱うように思えるので、呼び出しを抽象化し、APIバージョンとisLowRamDevice()フラグを一緒にチェックする方がよいと言います。 –

関連する問題