RxJava: come faccio a fare un look-once-and-reuse Observable?

Su each lancio di un'applicazione, ho un Retrofit Observable che recupera il nome utente dell'utente da un server. Voglio utilizzare questo valore per each successivo sottoscrittore, ma sembra che each volta che denomino subscribe (), il valore viene recuperato dalla networking. Dal momento che il nome utente non è probabile che cambia durante il ciclo di vita dell'app, non sto ricreando l'object Osservabile, solo una volta istanziata.

Come voglio lavorare è:

  • Android: ricerca di un metodo drawArc () con raggio interno ed esterno
  • Android, modo più veloce per disegnare una bitmap su una canvas
  • implementare un indicatore di attività di rotazione simile a iOS in Android
  • button di scelta personalizzata android non ottenuto controllato
  • DataPicker onDateChanged chiamato due volte
  • Marcatori di ridimensionamento di ClusterManager di Google maps v2 utils
  • Crea una volta l'Osservabile

    Ricall il nome utente una volta, salvare quel valore nell'Osservabile

    Su sottoscrizione, utilizzare il valore salvato, oppure se non è stato fatto il recupero, attendere che venga recuperato

    Come devo fare a questo proposito?

  • Come riparare Genymotion in Linux ElementaryOS con errore `CXXABI_1.3.8 'non trovato
  • Parse per Android non può pin elenco di sottoclass per la cache
  • Android Studio || GDK 'hello word' || import com.google.android.glass.app.Card || Imansible risolvere il simbolo 'google'
  • Qual è la differenza tra un IntentService e un servizio?
  • Invia i comandi APDU alla carta USIM / SIM in android
  • L'audio non viene riprodotto dopo aver arrestato il serviec nel lettore multimediale
  • 2 Solutions collect form web for “RxJava: come faccio a fare un look-once-and-reuse Observable?”

    Per elaborare la risposta corretta di David, ecco un codice che illustra l'utilizzo della cache :

     public class Caching { public static void main(String[] args) throws IOException { Observable<String> observable = doSomethingExpensive().cache(); observable.subscribe(System.out::println); observable.subscribe(System.out::println); } private static Observable<String> doSomethingExpensive(){ return Observable.create(subscriber -> { System.out.println("Doing something expensive"); subscriber.onNext("A result"); subscriber.onCompleted(); }); } } 

    Si noti che, anche se si ottiene risultati due volte, si effettua solo una cosa costosa una volta.

    È ansible utilizzare la cache() che recupererà il nome utente per il primo abbonato e riprodurrà il valore solo a tutti gli abbonati (incluso il primo ovviamente).

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.