Articles of rx java

RxJava:找出BehaviorSubject是否是重复的值

我正在制作一个Android界面,显示从networking中获取的一些数据。 我想让它显示最新的可用数据,并永远不会是空的(除非根本没有数据被提取),所以我使用BehaviorSubject为订户(我的用户界面)提供最新的可用信息,同时刷新它更新它的背景。 这是有效的,但由于我的用户界面的另一个要求,我现在必须知道发布的结果是否从networking获得新鲜或不。 (换句话说,我需要知道发布的结果是否为BehaviorSubject的保存项目。) 我怎样才能做到这一点? 如果我需要将它分解为多个Observables,那就好,只要我能够获得BehaviorSubject的caching行为(获取最后的可用结果),同时也能够判断返回的结果是来自caching还是不。 我认为这样做的一个拙劣的方法是检查响应的时间戳是否相对较快,但是这实在是太渺茫了,我宁愿想办法用RxJava来完成。

互联网检查,使用MVP,RX和Retrofit的地方

我已经通过这个和这个职位。 所以我真的同意第二个post,主持人不应该知道android的具体事情。 所以我在考虑的是把互联网检查放在服务层。 我正在使用Rx Java进行networking调用,所以我可以在进行服务调用之前进行networking检查,所以这样我需要手动抛出和IOException,因为当networking不可用时需要在视图上显示错误页面,另一个select是我创build我自己的错误类没有互联网 Observable<PaginationResponse<Notification>> response = Observable.create(new Observable.OnSubscribe<PaginationResponse<Notification>>() { @Override public void call(Subscriber<? super PaginationResponse<Notification>> subscriber) { if (isNetworkConnected()) { Call<List<Notification>> call = mService.getNotifications(); try { Response<List<Notification>> response = call.execute(); processPaginationResponse(subscriber, response); } catch (IOException e) { e.printStackTrace(); subscriber.onError(e); } } else { //This is I am adding manually subscriber.onError(new IOException); } subscriber.onCompleted(); […]

RxJava和Android上的随机零星事件

我想要像使用番石榴的EventBus或Otto一样使用RxJava ,但是我不知道如何才能使用这种方式。 这是场景:假设我想在我的Android应用程序中有一个button,并且每次按下button我都希望RxJava通过我的Observable发出一个事件。 在我看来,必须在事件发生后reregister服务,并且该活动还需要创build新的可观察事件。 就像我说的 Observable.from(x) 在我看来,对于每个事件我都需要这样做,但是这会创build一个需要重新注册的新的可观察对象。 当然,我失去了一些东西。

为什么定义Flowable我可以接收数据库的更新

@Query("SELECT * FROM userdata") Flowable<List<UserData>> allUserDatas(); @Insert(onConflict = OnConflictStrategy.REPLACE) List<Long> insert(List<UserData> datas); userDao.allUserDatas() take(1). filter(….) .subscribeOn(io()) .observeOn(mainThread()) .subscribe(userDatas -> Log.i("TAG",""+userDatas)); 我在onAttach()的同一片段中添加了订阅获取,但在数据库更新之后,它不会调用从数据库获取的订阅,为什么

将API调用与RX Java组合在一起

我是RXJava的新手,我无法理解如何链接API调用的结果。 我使用retrofit进行了两个API调用,A和B,都返回一个可观察的对象列表。 这两个API调用是独立的,所以我想同时做两个,但为了实现我的最终结果,我需要先拿A的结果,做一些工作,然后结合B的结果来填充我的列表适配器。 使API调用A 使API调用B 取A的结果并创build结果X. 以B + X的结果填充适配器 @GET("/{object_id}/object_a") Observable<List<Object_A>> getObjectAList( @Path("object_id") long object_id); @GET("/{object_id}/object_b") Observable<List<Object_B>> getObjectBList( @Path("object_id") long object_id); 这是我迷失在尝试使用RX java的地方。 我可以把api调用的结果作为我的工作,但我不确定如何把我刚刚生成的结果与API调用B结合起来。 aService. getObjectAList(object_a.getID()) .subscribeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.main) .subscribe(new Action1<List<Object_A>>() { @Override public void call(List<Section> sections) { // Do Stuff Here… // Now i need to take this result and combine it with API Call […]

给一个RxJava Observable从另一个方法发出的东西

我在片段中有一个variables,在整个片段的生命中,它的价值会发生多次变化。 它是由UI交互触发的,所以我认为使用Observable来保存它可能是一个好主意,而不是将所有待更新的视图都设置为字段,并从setter中进行UI更改。 该值必须通过另一种方法(基本上是一个应该在订户上调用onNext()的setter)来更新,而不是通过Observable本身。 有没有办法用RxJava的devise做到这一点? 换句话说,我正在寻找一个Observable字段,并给它新的值来发出(在其订阅者上调用onNext() )从另一个类的方法。

EditText有文本时启用button(RxAndroid)

RxJava / RxAndroid新手,我发现缺乏令人不安的例子。 作为一种使用Rx的方法,id喜欢尝试一些小工作。 基本上,如果一个EditText文本input到它,然后启用它下面的Button 。 我遇到了这个答案,但作者编辑并没有真正展示如何完全实现这样的东西。 从我所搜集的内容中,我可以使用RxBindings创build一个Observable如: Observable<CharSequence> observable = RxTextView.textChanges(mEditText); 据说我现在需要.subcribe()一个Observer来观察observable Observer到的变化,但我不确定这将如何完成。 另外,如果不使用RxBindings,如何创buildEditTexts Observable? 编辑:尽pipeRetrolambda存在,显示如何实现这个没有lambda(或两者)的答案将是有帮助的。

执行重试时逻辑

我有一个应用程序需要会话(cookie)来处理networking通话。 即时通讯使用Retrofit+RxJava 。 但是,会话可能会过期(401未授权状态的改装错误),我想重新authentication(获取新鲜的cookies),并在这种情况下重试以前的调用。 我将如何与RxJava做到这RxJava ? 我的例子: getServerApi().getDialogs(offset, getCookies()) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .retryWhen(observable -> {…}) // Need some logic .subscribe(dialogsEnvelope -> getView().setDialogs(dialogsEnvelope), throwable -> getView().setError(processFail(throwable)));

在使用Retrofit时如何在离线时对API调用进行排队

我正在使用Retrofit与rx-java结合使用,并且有以下问题: 有没有一种方法可以在设备脱机时将API调用排队到服务器,以便在设备再次联机时可以触发它们。

如何在Android RxJava Observable中按顺序运行2个查询?

我想运行2个asynchronous任务,其中一个(依次)。 我已经阅读了一些关于ZIP或Flat的内容,但是我不太了解它。 我的目的是从本地SQLite加载数据,当它完成时,它调用查询到服务器(远程)。 有人可以build议我,一个方法来实现呢? 这是我正在使用的RxJava Observable骨架(单个任务): // RxJava Observable Observable.OnSubscribe<Object> onSubscribe = subscriber -> { try { // Do the query or long task… subscriber.onNext(object); subscriber.onCompleted(); } catch (Exception e) { subscriber.onError(e); } }; // RxJava Observer Subscriber<Object> subscriber = new Subscriber<Object>() { @Override public void onCompleted() { // Handle the completion } @Override public […]