|
@@ -46,7 +46,7 @@ class Interval(
|
|
private var observerList = ArrayList<IntervalRangeObserver>()
|
|
private var observerList = ArrayList<IntervalRangeObserver>()
|
|
private var pause = false
|
|
private var pause = false
|
|
private var stop = false
|
|
private var stop = false
|
|
- private lateinit var dispose: Disposable
|
|
|
|
|
|
+ private var dispose: Disposable? = null
|
|
private val iterator = {
|
|
private val iterator = {
|
|
|
|
|
|
if (!pause) {
|
|
if (!pause) {
|
|
@@ -61,17 +61,18 @@ class Interval(
|
|
|
|
|
|
public override fun subscribeActual(observer: Observer<in Long?>) {
|
|
public override fun subscribeActual(observer: Observer<in Long?>) {
|
|
|
|
|
|
- val agentObserver =
|
|
|
|
- IntervalRangeObserver(observer)
|
|
|
|
|
|
+ val agentObserver = IntervalRangeObserver(observer)
|
|
observerList.add(agentObserver)
|
|
observerList.add(agentObserver)
|
|
|
|
|
|
observer.onSubscribe(agentObserver)
|
|
observer.onSubscribe(agentObserver)
|
|
|
|
|
|
- if (!this::dispose.isInitialized) init()
|
|
|
|
|
|
+ if (dispose == null) init()
|
|
agentObserver.setResource(dispose)
|
|
agentObserver.setResource(dispose)
|
|
}
|
|
}
|
|
|
|
|
|
private fun init() {
|
|
private fun init() {
|
|
|
|
+ if (observerList.isEmpty()) return
|
|
|
|
+
|
|
dispose = if (scheduler is TrampolineScheduler) {
|
|
dispose = if (scheduler is TrampolineScheduler) {
|
|
val worker = scheduler.createWorker()
|
|
val worker = scheduler.createWorker()
|
|
worker.schedulePeriodically(iterator, initialDelay, period, unit)
|
|
worker.schedulePeriodically(iterator, initialDelay, period, unit)
|
|
@@ -103,7 +104,7 @@ class Interval(
|
|
*/
|
|
*/
|
|
fun reset() {
|
|
fun reset() {
|
|
count = start
|
|
count = start
|
|
- dispose.dispose()
|
|
|
|
|
|
+ dispose?.dispose()
|
|
init()
|
|
init()
|
|
}
|
|
}
|
|
|
|
|
|
@@ -123,7 +124,7 @@ class Interval(
|
|
|
|
|
|
// </editor-fold>
|
|
// </editor-fold>
|
|
|
|
|
|
- class IntervalRangeObserver(
|
|
|
|
|
|
+ private class IntervalRangeObserver(
|
|
private val downstream: Observer<in Long?>
|
|
private val downstream: Observer<in Long?>
|
|
) : AtomicReference<Disposable?>(), Disposable {
|
|
) : AtomicReference<Disposable?>(), Disposable {
|
|
|
|
|