Причина, по которой вы не получаете событие "done", заключается в том, что вы никогда не close
подписываете поток.
Причина, по которой вы не получаете больше событий "паузы", заключается в том, что потоковая подписка умная .
Первое, что вы делаете, это добавляете много событий, прежде чем кто-либо даже послушает поток. Вы никогда не должны делать это в реальном коде, вместо этого начинайте добавлять события только при вызове onListen
и останавливайтесь снова при вызове onPause
, пока подписка не будет возобновлена.
Здесь потоковая подписка заполняется рядом событий, затем она доставляет одно событие, а затем подписка приостанавливается.
Подписка покорно сообщает об этом обратно контроллеру.
Затем подписка получает резюме. Вот где это становится умным. Поскольку у него уже есть события для доставки, он не сообщает о возобновлении обратно контроллеру. На самом деле он не хочет больше событий прямо сейчас, есть что доставить. И поэтому он доставляет буферизованные события с интервалом в одну секунду, пока буфер не станет пустым. В этой точке он сообщает о возобновлении обратно контроллеру.
Контроллер сообщает, что работа возобновлена, но поскольку никто не добавляет больше событий, и никто не вызывает close
, больше ничего не произойдет.