我是RX java的新手。
尝试使用订阅者创建使用者,但我看到不推荐使用create方法。
我看到几乎所有其他创建方法,除了具有Emitter类的方法,都使用这种不安全的方法。
这是什么意思“不安全”,这与发射器之间有什么区别。我不应该用这个吗?
@Deprecated
public static <T> Observable<T> create(OnSubscribe<T> f) {
return new Observable<T>(RxJavaHooks.onCreate(f));
}
@Experimental
public static <T> Observable<T> unsafeCreate(OnSubscribe<T> f) {
return new Observable<T>(RxJavaHooks.onCreate(f));
}
编辑:
我怎样才能改变这样的东西(当然我简化了它):我正在尝试创建一个从远程HTTP服务创建的Observable。
return Observable.unsafeCreate(subscriber -> {
HttpEntity entity = restTemplate.get(...)
if (entity.status != 200) {
subscriber.onError(new RunTimeException("Error");
}
else {
Object object = createObject(entity)
subscriber.onNext(object);
subscriber.onCompleted();
}
});
问候,Ido
这是什么意思“不安全”
不安全意味着您需要高级RxJava知识才能通过create
或unsafeCreate
实现运算符,但不建议这样做。
create
方法是创建RxJava内部运算符的一种非常早期的方法,必须公开才能使它跨包。不幸的是,很多人发现了这种方法并开始实现基本的源代码,然后想知道为什么他们的实现失败由于二进制兼容性以及正确使用它的人,我们无法删除该方法。
这和发射器之间有什么区别
发射器版本正确设置取消订阅并强制开发人员指定背压策略,通常不考虑原始create
导致MissingBackpressureException
。
我不应该用这个吗?
由于您是RxJava的新手,因此不应使用create(OnSubscribe)
或unsafeCreate(OnSubscribe)
。还要考虑学习RxJava v2,而不再是不安全的创建。