2015-08-27 6 views
29

Ich lese here, dass wir einige globale Cache verwenden können, um die Rotation zu behandeln.Wie behandelt man die Rotation mit Retrofit und RxJava/RxAndroid in Aktivität?

Sie können dies verhindern, indem Sie den Cache mit oder Observablenoperatoren wiedergeben, wobei er darauf achtete die beobachtbaren irgendwie überleben die Aktivität Lebenszyklus (zum Beispiel, indem sie in einem globalen Cache, in einem Fragmente zu speichern, etc.)

Aber wie erreicht man das? Jemand kann mich auf ein Beispiel hinweisen, wie es geht? Oder kennen Sie vielleicht einen besseren Ansatz für Konfigurationsänderungen?

EDIT:

Denn jetzt habe ich viele Wege gefunden, aber ich endete mit RxBus Realisierung mit. Ein schönes Beispiel für die Verwendung von RxBus finden Sie here.

Antwort

5

Ich habe eine Demo-Anwendung (https://github.com/pmellaaho/RxApp) gemacht, um zu experimentieren, wie die Arten von Situationen in Android-Anwendung zu bekämpfen. Um es kurz zu machen: Ich benutze ein Singleton-Modell von Activity, um die Antwort vom Netzwerk zu bekommen. Dies ermöglicht das Zwischenspeichern von Antworten, den Zugriff auf Daten von mehreren Benutzeroberflächenkomponenten, das Abonnieren einer ausstehenden Anforderung und das Bereitstellen von Scheindaten für automatisierte UI-Tests.

+2

Vielen Dank für Ihre Demo-Anwendung! Aber ich denke, wir sollten die RxLifecycle-Bibliothek verwenden, um mit der Rotation umzugehen, während wir eine Anfrage stellen. Schauen Sie sich RxAndroid Änderungen und stabile Version https://github.com/ReactiveX/RxAndroid/blob/80393be5a835374bf9614e89f0629d5650fcdf92/CHANGES.md –

+1

Ich habe keine Erfahrung aus erster Hand auf RxLifecycle, aber ich denke, dass es sich um automatische Abmeldung basierend auf kümmern kann Lebenszyklus-Ereignisse für Sie. Sie müssen immer noch auf ausstehende Anfragen abonnieren/selbst zwischengespeicherte Daten abrufen. Bitte korrigieren Sie, wenn ich falsch liege – pmellaaho

+0

Ich denke, Sie haben Recht, aber ich habe immer noch nicht implementiert RxLifecycle, so kann Sie jetzt nicht korrigieren. Ich hoffe, dass jemand, der bereits RxLifecycle und RxBinding benutzt hat, uns korrigieren kann. –

0

Ich habe vor kurzem Loader in Verbindung mit ConnectableObservable verwendet, um bessere Rotationen während RxJava2-Stream zu behandeln. Ich habe sogar eine Medium Post erstellt, die ausführlich meinen Ansatz erklärt.

Grundsätzlich müssen Sie die beobachtbaren (ConnectableObservable) stellen in einem Loader mit einem Transformator und nächste Wieder abonnieren Sie es, wenn die Aktivität/Fragment Lebenslauf nach zerstört.

Verwandte Themen