Firebase doesn't send data ordered in my case -
i have ordered data in firebase. order critical me. firebase can't send ordered in case. (ps: persistence enabled. tried @ android , ios client. result same.)
first, there 3 items , received them.
cache: 1,2,3 firebase:1,2,3 then, closed app , updated data(inserted 3 item).
cache: 1,2,3 firebase:1,2,3,4,5,6 i opened app , limittolast(1) method last item.
cache: 1,2,3,6 firebase:1,2,3,4,5,6 and error coming..
i registered node childadded event. childadded callback triggered sequence:
1,2,3,6,4,5 i don't want sort items. should do?
i finished example project. https://github.com/muzafferyilmaz/firebaseordertesting
update
relevant code snippet linked github project:
private childeventlistener mchildeventlistener = new childeventlistener() { @override public void onchildadded(datasnapshot datasnapshot, string s) { string text = datasnapshot.getvalue(string.class); log.i(tag, "onchildadded: " + text); madapter.adddata(text); }
your problems caused fact you're ignoring second argument passed onchildadded:
void onchildadded(datasnapshot snapshot, string previouschildname) that previouschildname key of element new child needs added after. ignoring it, you're losing guarantee of ordering.
private childeventlistener mchildeventlistener = new childeventlistener() { @override public void onchildadded(datasnapshot datasnapshot, string s) { string text = datasnapshot.getvalue(string.class); log.i(tag, "onchildadded: " + text + " after s"); madapter.adddata(text); } logcat shows:
onchildadded: 1 after null onchildadded: 2 after onchildadded: 3 after b onchildadded: 6 after c onchildadded: 4 after c onchildadded: 5 after d if execute these in order, get:
a: 1a: 1, b: 2a: 1, b: 2, c: 3a: 1, b: 2, c: 3, f: 6a: 1, b: 2, c: 3, d: 4, f:6a: 1, b: 2, c: 3, d: 4, e: 5, f:6
Comments
Post a Comment