liujingxing / rxlife

一行代码解决RxJava 内存泄漏,一款轻量级别的RxJava生命周期管理库
Apache License 2.0
359 stars 38 forks source link

LifecycleScope 移除 Observer 的疑问 #25

Open gentrio opened 1 year ago

gentrio commented 1 year ago

LifecycleScope 为什么要在 onScopeStart 方法中执行 onScopeEnd 去主动移除 observer 监听,然后重新添加?

gentrio commented 1 year ago

WX20230802-204502@2x

liujingxing commented 1 year ago

看起来确实是多余的,应该是手误,容我再回忆回忆

gentrio commented 1 year ago

还有一个点想跟老哥讨论一下,我看RxHttp和RxLife封装的Observer都对onNext做了try catch,我onNext里处理逻辑抛出异常,同样会走onError处理逻辑,这样的话相当于onNext和onError都触发了,两者并不是互斥的,就是这么设计的吗?

liujingxing commented 1 year ago

是的,RxJava就是这么设计的

gentrio commented 1 year ago

我刚有看Rxjava的设计,当传入onNext consumer和onError consumer 异常是会被捕获因为封装了一层observer,前提未进行线程切换,但如果使用自定义Observe异常是捕获不住的。

liujingxing commented 1 year ago

前提未进行线程切换?这句话我没看懂

gentrio commented 1 year ago

线程切换这点理解有误,主要还是看Observer的处理机制

liujingxing commented 1 year ago

是的,onError/onComplete才是互斥的