当范围处于 ON_PAUSE 或 ON_STOP 状态时,使用 Autodispose 的流是否应该停止发射?
Should streams using Autodispose stop emitting when scope is in ON_PAUSE or in ON_STOP state?
在 autodispose 库中,当我们有一个带有间隔运算符的流并自动处理时,即使范围发出暂停和停止状态,流也会继续触发?
例子
Fragment {
override fun onViewCreated() {
Flowable.just(1).flatMap{ value ->
Flowable.interval(1, TimeUnit.SECONDS).map{value}
.autoDispose(viewLifecycleOwner)
.subscribe{Timber.d("Value: $value")}
}
}
}
当我们切换到下一个 Activity 时,即使作用域自身进入 ON_PAUSE 状态然后进入 ON_STOP 状态,间隔也会继续发出值。
使用时行为没有改变
private val scopeProvider by lazy { AndroidLifecycleScopeProvider.from(viewLifecycleOwner) }
并改用 autoDispose(scopeProvider)
您的示例中相应的生命周期事件是 onDestroyView()
,它在 onPause()
和 onStop()
之后。请参阅此图了解生命周期流程:https://i.imgur.com/0EVReuq.png.
如果您希望它在暂停或停止状态下停止,您可以
1 - 将此订阅移至 onStart()
(停止)或 onResume()
(暂停)
2 - 手动设置所需的结束事件
Fragment {
override fun onViewCreated() {
Flowable.just(1).flatMap{ value ->
Flowable.interval(1, TimeUnit.SECONDS).map{value}
.autoDispose(viewLifecycleOwner, untilEvent = Lifecycle.Event.ON_PAUSE) // or ON_STOP
.subscribe{Timber.d("Value: $value")}
}
}
}
在 autodispose 库中,当我们有一个带有间隔运算符的流并自动处理时,即使范围发出暂停和停止状态,流也会继续触发?
例子
Fragment {
override fun onViewCreated() {
Flowable.just(1).flatMap{ value ->
Flowable.interval(1, TimeUnit.SECONDS).map{value}
.autoDispose(viewLifecycleOwner)
.subscribe{Timber.d("Value: $value")}
}
}
}
当我们切换到下一个 Activity 时,即使作用域自身进入 ON_PAUSE 状态然后进入 ON_STOP 状态,间隔也会继续发出值。
使用时行为没有改变
private val scopeProvider by lazy { AndroidLifecycleScopeProvider.from(viewLifecycleOwner) }
并改用 autoDispose(scopeProvider)
您的示例中相应的生命周期事件是 onDestroyView()
,它在 onPause()
和 onStop()
之后。请参阅此图了解生命周期流程:https://i.imgur.com/0EVReuq.png.
如果您希望它在暂停或停止状态下停止,您可以
1 - 将此订阅移至 onStart()
(停止)或 onResume()
(暂停)
2 - 手动设置所需的结束事件
Fragment {
override fun onViewCreated() {
Flowable.just(1).flatMap{ value ->
Flowable.interval(1, TimeUnit.SECONDS).map{value}
.autoDispose(viewLifecycleOwner, untilEvent = Lifecycle.Event.ON_PAUSE) // or ON_STOP
.subscribe{Timber.d("Value: $value")}
}
}
}