In autodispose library is it by design that when we have a stream with interval operator and autodispose the stream continues to trigger even when the scope has emitted a pause and stop state?
example
Fragment {
override fun onViewCreated() {
Flowable.just(1).flatMap{ value ->
Flowable.interval(1, TimeUnit.SECONDS).map{value}
.autoDispose(viewLifecycleOwner)
.subscribe{Timber.d("Value: $value")}
}
}
}
When we change to the next Activity the interval continues emitting the value even though the scope it self goes to ON_PAUSE state and then to ON_STOP state.
behaviour does not change when using
private val scopeProvider by lazy { AndroidLifecycleScopeProvider.from(viewLifecycleOwner) }
and use the autoDispose(scopeProvider) instead
The corresponding lifecycle event in your example would be
onDestroyView()
, which is after bothonPause()
andonStop()
. See this diagram for the lifecycle flow: https://i.stack.imgur.com/maMyK.png.If you want it to stop in pause or stop states you can either
1 - Move this subscription to
onStart()
(for stop) oronResume()
(for pause)2 - Manually set the desired end event