CustomObservable vs Observable.create()?

CustomObservable vs Observable.create()?,第1张

CustomObservable vs Observable.create()?

在某些情况下,创建自定义Observable会给情人带来开销

在RxJava 1.x中,扩展an

Observable
和using没有好处,
Observable.create(OnSubscribe)
因为它们实际上是相同的。有
不过是,创建一个造福
Observable
于中间
比使用 *** 作符
lift()
与自定义
Operator
。 由于人们倾向于首先发现并实际上 重新实现,或者在意识到 不必要的重新实现之前,会
Observable.create(Emitter, BackpressureStrategy)
增加
额外的保护措施的开销。
createjust()range()from()

在RxJava 2.x中,默认方法是扩展

Observable
,其他类型
添加源/中间运算符,这可能是最低的开销。受保障的创建方法仍然存在,但有一些小的
投资进入了解协议,就可以避免分配额外的对象,由于
create()
由具有
Observer
Disposable

实现的接口或延伸的基类的有针对性的外部的技术。

例如,这就是我为Java Swing和RxJava2编写适配器库的方式:

final class ActionEventObservable extends Observable<ActionEvent> {    final AbstractButton widget;    ActionEventObservable(AbstractButton widget) {        this.widget = widget;    }    @Override     protected void subscribeActual(Observer<? super ActionEvent> observer) {        AbstractButton w = widget;        ActionEventConsumer aec = new ActionEventConsumer(observer, w);        observer.onSubscribe(aec);        w.addActionListener(aec);        if (aec.get() == null) { w.removeActionListener(aec);        }    }    static final class ActionEventConsumer extends AbstractEventConsumer<ActionEvent, AbstractButton> implements ActionListener {        private static final long serialVersionUID = -3605206827474016488L;        ActionEventConsumer(Observer<? super ActionEvent> actual, AbstractButton widget) { super(actual, widget);        }        @Override        public void actionPerformed(ActionEvent e) { actual.onNext(e);        }        @Override        protected void onDispose(AbstractButton component) { component.removeActionListener(this);        }    }}

一些

Disposable
管理隐藏在一个通用
AbstractEventConsumer
类中,并且各个事件处理程序通常必须实现所需的
Listener
方法,并在
Dispose
上调用适当的
remove
方法。

附带说明一下,大多数流行的技术可能已经具有可以使用的

RxJava
适配器。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5489236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存