Beschränke Realm-Ergebnisse

8

Wie beschränke ich die Anzahl der Objekte, die Realm zurückgibt? .findAll gibt alle Zeilen zurück, die mit der Abfrage übereinstimmen, und .findFirst gibt nur die erste zurück. Aber was ist mit etwas wie ersten 1000? .findAll kann so viele Zeilen zurückgeben, dass es viel zu viel Speicher verbraucht.

    
Tapani 24.04.2015, 16:18
quelle

4 Antworten

13

Das Coole ist, dass du dir darüber in Realm keine Sorgen machen musst. Das Ergebnisobjekt, das von einer Abfrage zurückgegeben wird, lädt die Objekte und ihre Felder beim Zugriff auf sie langsam. Ihre Objekte werden niemals kopiert und daher nur einmal im Speicher / Datenträger dargestellt.

Das (aktuelle) Implementierungsdetail von diesem ist, dass das RealmResults-Objekt, das von einer Abfrage zurückgegeben wird, nur eine Liste der Verweise auf die übereinstimmenden Objekte ist. Diese Referenzen sind winzige Zahlen, die komprimiert gespeichert werden, so dass sie sehr wenig Speicher benötigen. Selbst mit 100.000 Spielen würde es nicht viel Speicher benötigen. Und es würde die gleiche Menge an Speicher für alle Arten von Objekten aufnehmen, egal ob sie ein int-Feld oder Hunderte von Feldern mit Strings oder großen Binärdateien haben.

    
bmunk 26.04.2015, 08:09
quelle
1

Ich habe die Lösung gefunden, um dies nach so vielen Tagen mit der "between" -Abfrage zu erreichen, wie sie in der offiziellen Dokumentation Ссылка

Wenn Sie die ersten N Elemente abrufen möchten, übergeben Sie einfach die Anzahl von und an mit dem Feldnamen wie folgt

%Vor%

Wo,

"count" = Feldname (dh Variablenname in Ihrem Pojo)
"0" = Bereich von
"1000" = Bereich für

Zum Beispiel: Die obige Abfrage holt zuerst 0 bis 1000 als RealmResults.

Hinweis: Die obige Lösung funktioniert nur, wenn Sie eine eindeutige ID mit Zeilenanzahl haben. In meinem Fall habe ich den Zeilenzählwert vor dem Einfügen der Werte in Realm manuell eingefügt.

    
Chandru 04.10.2017 11:22
quelle
0

Ein Weg könnte dies sein, wenn Sie wirklich nur RealmResults wollen, indem Sie Stream limit method verwenden :

%Vor%     
ahmadalibaloch 25.09.2016 16:51
quelle
0

Realm bietet derzeit keine Begrenzungsfunktion, aber wenn Sie zuerst N Elemente wollen

%Vor%

für die letzten N Elemente

%Vor%     
saksham 08.04.2017 11:13
quelle

Tags und Links