rxlife icon indicating copy to clipboard operation
rxlife copied to clipboard

LifecycleScope 移除 Observer 的疑问

Open gentrio opened this issue 1 year ago • 8 comments

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

gentrio avatar Aug 02 '23 12:08 gentrio

WX20230802-204502@2x

gentrio avatar Aug 02 '23 12:08 gentrio

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

liujingxing avatar Aug 02 '23 13:08 liujingxing

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

gentrio avatar Aug 02 '23 14:08 gentrio

是的,RxJava就是这么设计的

liujingxing avatar Aug 02 '23 14:08 liujingxing

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

gentrio avatar Aug 02 '23 14:08 gentrio

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

liujingxing avatar Aug 02 '23 15:08 liujingxing

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

gentrio avatar Aug 02 '23 15:08 gentrio

是的,onError/onComplete才是互斥的

liujingxing avatar Aug 03 '23 03:08 liujingxing