Wie Sie die Observable.interval-Emitting-Ticks stoppen und fortsetzen
Diese emittieren ein tick alle 5 Sekunden.
Observable.interval(5, TimeUnit.SECONDS, Schedulers.io())
.subscribe(tick -> Log.d(TAG, "tick = "+tick));
Ihn zu stoppen, die Sie verwenden können
Schedulers.shutdown();
Dann aber alle Disponenten beendet, und es ist nicht möglich, um wieder die ticken später. Wie kann ich das stoppen und fortsetzen der emiting "anmutig"`?
InformationsquelleAutor der Frage Jan Seevers | 2016-02-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine mögliche Lösung:
InformationsquelleAutor der Antwort AndroidEx
Können Sie festlegen
switch
zufalse
auszusetzen, das ticken und dietrue
fortsetzen.InformationsquelleAutor der Antwort Sheng
Einige Zeit her, ich war auch auf der Suche nach Art von RX "timer" - Lösungen, aber nicht von Ihnen erfüllt meine Erwartungen. Also, dort finden Sie meine eigene Lösung:
InformationsquelleAutor der Antwort Artur Szymański
Hier ist ein anderer Weg, dies zu tun, denke ich.
Wenn Sie den Quellcode, finden Sie Intervall() mit Klasse OnSubscribeTimerPeriodically. Der Schlüssel-code unten.
So, sehen Sie, wenn Sie wollen, cannel der Schleife, was über das werfen einer neuen Ausnahme in onNext(). Beispiel-code unten.
Dann werden Sie sehen:
InformationsquelleAutor der Antwort Chris Wong
Sorry das ist in RxJS statt RxJava, aber das Konzept wird das gleiche sein. Ich angepasst, das von lernen-rxjs.io und hier ist es auf codepen.
Die Idee ist, dass Sie beginnen mit zwei streams klicken Sie auf Ereignisse,
startClick$
undstopClick$
. Jeder Klick erfolgt auf derstopClick$
stream bekommen zugeordnet, um eine leere zu beobachten, und klickt aufstartClick$
jeweils zugeordnetinterval$
stream. Die beiden resultierenden streams bekommenmerge
-d zusammen in einer observable-der-observablen. In anderen Worten, eine neue beobachtbare einer der beiden Typen, die emittiert werden vonmerge
jedes mal gibt es ein klicken. Die daraus resultierenden messbaren gehen durchswitchMap
beginnt das hören dieser neuen beobachtbare und Haltestellen zu hören, was er hörte, bevor. Switchmap startet auch das Zusammenführen der Werte aus dieser neuen beobachtbar auf den vorhandenen stream.Nach dem Wechsel
scan
immer nur sieht die "increment" - Wert emittiertinterval$
und er sieht keine Werte, wenn "stop" geklickt wurde.Bis der erste auf tritt,
startWith
beginnen emittierende Werte von$interval
nur um die Dinge in Gang:Und hier ist der HTML -
InformationsquelleAutor der Antwort mikebridge