2015-07-29 19 views
5

Io lavoro con RxJava e RxAndroid. Come riprendere il lavoro di un osservabile se si verifica un cambio di configurazione (rotazione delle attività, cambio della lingua, ecc.)?RxJava: come riprendere il lavoro di un osservabile se si verifica un cambio di configurazione?

Non è necessario solo riprendere il lavoro di un osservabile, inoltre ho bisogno di salvare gli elementi emessi, quando l'iscritto è annullato ed emettere immediatamente tutti gli elementi salvati dopo l'iscrizione.

Ho letto una tonnellata di articoli, ma non ho trovato la risposta alla mia domanda.

ho trovato alcuni esempi, ma nessuno di loro non risolve il problema:

risposta

4

è possibile utilizzare uno dei il ConnectableObservables. In particolare, cache o replay sarebbero utili per questo tipo di situazione.

Ad esempio, è possibile chiamare cache sul proprio osservabile, unsubscribe quando l'attività viene distrutta e risottoscriverla di nuovo dopo che l'attività è stata ricreata.

1

Ho realizzato un'applicazione demo (https://github.com/pmellaaho/RxApp) per sperimentare come affrontare questo tipo di situazioni. Fondamentalmente, utilizzo un modello singleton da Activity per ottenere la risposta dalla rete. Ciò rende possibile memorizzare le risposte nella cache, accedere ai dati da più componenti dell'interfaccia utente, sottoscrivere richieste in sospeso e anche fornire dati fittizi per i test dell'interfaccia utente automatizzati.

1

È possibile utilizzare OperatorFreeze da questo library per mettere in pausa Osservabile quando si ricrea l'attività. È necessario passare l'istanza di questo operatore al metodo Observable.lift(). Non è necessario annullare l'iscrizione a Observables quando si utilizza Presenter persistente.

+0

Si prega di dichiarare di possedere una risorsa al momento della sua pubblicazione. Vedi [Come non essere uno spammer] (https://stackoverflow.com/help/promotion) – LW001

Problemi correlati