Ich wollte die Hilfsmethode isLowRamDevice
für meine App verwenden, die Videos streamt. Da ich Geräte unten API-Ebene 15 unterstütze, musste ich ActivityManagerCompat.isLowRamDevice()
verwenden. Ich war wirklich verwirrt, dass es immer falsch zurückgegeben wurde, auch wenn ich wirklich alte Geräte benutze. Dann überprüfte ich die Methode selbst und sah dies:ActivityManagerCompat.isLowRamDevice ist nutzlos, gibt immer false zurück
public static boolean isLowRamDevice(@NonNull ActivityManager am) {
if (Build.VERSION.SDK_INT >= 19) {
return ActivityManagerCompatKitKat.isLowRamDevice(am);
}
return false;
}
Also kein Wunder, dass es immer falsch auf meinem Android 4.0.4 Gerät zurückgibt. Aber für mich macht das absolut keinen Sinn. Oder fehlt mir etwas?
Sicher, aber Geräte mit Android 4.3 oder älter sind eher LowRamDevices. Warum haben sie diese Methode für ältere Geräte über support lib verfügbar gemacht? Das macht absolut keinen Sinn. – JensJensen
@JensJensen: "Geräte mit Android 4.3 oder älter sind wahrscheinlicher LowRamDevices" - nicht unbedingt nach Googles Definition von Low-RAM-Geräten. "Warum haben sie diese Methode für ältere Geräte über Support-Bibliotheken verfügbar gemacht?" - so ziemlich alle Klassen, die auf "... Compat" enden. Sie rufen die reale Implementierung auf kompatiblen Geräten auf und geben einige Stubs auf älteren Geräten zurück. Manchmal ist der Stub anspruchsvoller. In diesem Fall stimme ich zu, dass sie einen Wert basierend auf dem tatsächlichen Geräte-RAM abgeleitet haben sollten. – CommonsWare
Die Implementierung stimmt mit anderen Support-Bibliotheken überein. Es klingt so, als würden Sie alte Geräte als Low-Ram behandeln, also würde ich sagen, dass Sie lieber den Aufruf und die API-Version in und den isLowRamDevice() -Flag zusammen abstrahieren. –