0

Ich habe eine RecyclerView mit einem Cursor-Adapter. Für jeden vom Cursor geladenen Gegenstand muss ich zusätzliche Daten von einem externen ContentProvider (nicht meins) laden.Adapterdaten mit AsyncQueryHandler oder AsycTask zusammenführen

Ich erwäge, entweder einen AsyncQueryHandler oder einen AsyncTask von meinen Adaptern onBindViewHolder() zu starten. Welches ist die bessere Wahl und warum?

Oder ist dieser Ansatz nur eine schlechte Idee? Gibt es eine bessere Lösung zum Zusammenführen von Daten aus unterschiedlichen Quellen?

Antwort

1

Was ich rate, ist in RxJava suchen.

https://github.com/ReactiveX/RxJava/wiki/The-RxJava-Android-Module

Warum? Nun, der einzige Nachteil ist die Lernkurve. RxJava hat jedoch eine gute Möglichkeit, mit all den Dingen umzugehen, die AsyncTasks an sich reißen. Keine der Optionen ist technisch schlecht, aber es gibt viel mehr Arbeit, die Sie tun müssen, um sicherzustellen, dass es tatsächlich in Ihrem Lebenszyklus und mehreren Bedingungen funktioniert, die ich ehrlich gesagt denke, ist nicht die Mühe wert, vor allem da RxJava es macht so viel einfacher.

Hier finden Sie eine Anleitung, wie Sie eine AsyncTask in eine Rx.Observable konvertieren können. Nachdem Sie den Dreh raus haben, werden Sie nie wieder eine AsyncTask verwenden!

http://blog.stablekernel.com/replace-asynctask-asynctaskloader-rx-observable-rxjava-android-patterns/

+0

Danke, ich begann das ein Problem für Rx denken könnte. Die Verwendung von 'map' könnte nützlich sein. Ich habe einen Stream und eine Funktion (die zweite Abfrage), die über jedes Element im Stream abgebildet werden kann. Nicht sicher, ob dies der beste Weg ist. – sidecarcat