У меня есть Observable
, который испускает тики каждую секунду:
Observable.interval(0, 1, TimeUnit.SECONDS)
.take(durationInSeconds + 1));
Я хотел бы приостановить этот Observable, чтобы он перестал выдавать числа, и возобновить его по требованию.
Есть некоторые ошибки:
- согласно
Observable
Javadoc, операторinterval
не поддерживает обратное давление - в вики RxJava о обратном давлении есть раздел о блокировке стека вызовов как средстве управления потоком. альтернатива обратному давлению:
Еще один способ обработки сверхпроизводительного Observable – заблокировать стек вызовов (припарковать поток, управляющий сверхпродуктивным Observable). Недостаток этого метода состоит в том, что он идет вразрез с "реактивной" и неблокирующей моделью Rx. Однако это может быть жизнеспособным вариантом, если проблемный Observable находится в потоке, который можно безопасно заблокировать. В настоящее время RxJava не предоставляет никаких операторов для облегчения этого.
Есть ли способ приостановить interval
Observable? Или я должен реализовать свой собственный «тикающий» Observable с некоторой поддержкой обратного давления?