2017-07-07 9 views
0

Ich benutze Android Room, um Daten zu laden. meine Frage ist diese:Android Room - emittieren Einzelelementupdate

@Query("SELECT * FROM TrackedItem where isArchived = 0 ORDER BY creationDate DESC") 
Flowable<List<TrackedItem>> getAll(); 

Wenn getAll() aufrufen ich alle Einzelteile in der ersten Zeit. Dann aktualisiere ich alle Elemente mithilfe einer Netzwerkanforderung. Was passiert ist, dass, wenn ich 100 Elemente habe, die getAll() wird 100 Mal die gesamte Liste emittieren, die die RecyclerView 100 mal aktualisiert wird.

Best Practice für das Abrufen eines einzelnen Elements, das geändert wurde, und den Aufruf von notifyItemChanged?

Danke.

+0

"Ich aktualisiere alle Elemente mit einer Netzwerkanforderung" - wie geht es Ihnen? Ein DAO-Anruf? 100 DAO Anrufe? Etwas anderes? – CommonsWare

+0

änderte es jetzt zu einem DAO Anruf – Shahar

+0

Und ... hat das das Problem geklärt? Ich habe dieses Szenario nicht getestet, und so würde ich hoffen, dass ein einzelner DAO-Aufruf zu einem einzigen Update durch den 'Flowable' führen würde, aber es gibt einen Grund, warum Room in Alpha ist ... :-) – CommonsWare

Antwort

0

Beantworten Sie meine eigene Frage, wenn jemand das gleiche Problem bekommt. Anstatt jedes Element nach einer Aktualisierung zu speichern, speichere ich alle einmal Aufruf von @Insert mit (TrackedItem ... Elemente). , die nur ein Update ausgibt.

Verwandte Themen