All*_*n W 2 android rx-java2 rx-kotlin2
这个问题与Android和生命周期有关。以前,我会有一系列主题并在创作时订阅它们。
销毁后,我会将所有主题标记为完整,假设它处理了所有订阅者。
在 Android Studio 3.1 中,我会收到针对“未使用”的任何订阅者的警告。解决方案是将它们添加到“完全一次性”中,然后我在销毁时进行处理。
我需要“复合一次性”来在销毁时正确取消请求吗?我之前将主题标记为完整的方法有什么作用吗?在这种情况下有必要吗?
作为代码示例:
val observable: PublishSubject<Int> = PublishSubject.create()
val disposable = observable.subscribe { /* subscription */ }
fun onDestroy() {
observable.onComplete() // is this line necessary or helpful?
disposable.dispose()
}
Run Code Online (Sandbox Code Playgroud)
observable.onComplete()将完成您的流,因此向所有监听的订阅者触发此事件onComplete,您不需要在 onComplete 之后处置流(这是自动完成的)。
disposable.dispose()将停止流并且不会触发任何完整事件。
如果您没有监听完整的事件,则两者是相同的,因此要回答您的问题,您不需要两条线。