java CustomObservable vs Observable。创建()?
我正在将侦听器包装成可观察对象。通常我们使用Observable.create()
来包装它,但是有些库更喜欢使用自定义的可观察对象,并在其中包装一些东西,比如RxBinding
,甚至是RxJava本身(据我所知,operators
基本上是创建新的自定义可观察对象来在其内部进行操作)
因此,我的问题是:
我们可以从Custom Observable中获得什么好处?它的开销比Observable.create()
要低,因为我们不会生成另一个ObservableCreate
来为我们覆盖ObservableSource
我应该使用哪一个将现有库包装成Rx样式(例如:Firebase)
# 1 楼答案
在某些情况下,创建自定义可观察对象会带来额外的开销
在rxjava1中。x、 扩展},实际上在意识到它是不必要的之前用它重新实现{}、{}或{}
Observable
和使用Observable.create(OnSubscribe)
没有任何好处,因为它们实际上是相同的。但是,为中间运算符创建Observable
比将lift()
与自定义Operator
一起使用有好处Observable.create(Emitter, BackpressureStrategy)
通过额外的保护增加了开销,因为人们倾向于首先找到{在rxjava2中。x、 默认方法是扩展
Observable
和其他类型以添加源/中间运算符,这是最低的开销。受保护的创建方法仍然存在,但只需对理解协议进行少量投资,就可以通过让Observer
或Disposable
也实现接口或扩展目标外部技术的基类来避免由于create()
而分配额外对象例如,我就是这样为Java Swing和RxJava 2编写适配器库的:
一些一次性管理隐藏在公共
AbstractEventConsumer
类中,单个事件处理程序大多必须实现所需的Listener
并在dispose上调用适当的remove方法另一方面,最流行的技术可能已经有了可以使用的RxJava适配器
# 2 楼答案
只要可能,我都会使用库提供的创建方法,如:
generate
、fromCallable
或create
。它们没有开销。它们处理各种内务管理问题,在编写自定义可观察对象时,您很容易忘记这些问题不幸的是,在某些情况下,您无法使用它们,例如,当您需要特别安排时。在编写自定义observable之前,我建议查看
generate
或create
库方法的源代码。确保你理解它的每一个细节,这样你就可以在你的可观察到的事物中做类似的事情