【发布时间】:2015-04-05 04:29:50
【问题描述】:
我正在使用 RXJava,在 Android 中进行改造。我正在尝试完成以下任务:
我需要定期轮询给我一个 Observable 的电话>(从这里我可以做到)
一旦我得到这个列表,我想在每个 Delivery 中迭代并调用另一个方法,这会给我 ETA(所以只是更多信息)我想将此新信息附加到交付中,并返回完整列表和额外的附在每个项目上的信息。
一旦我得到列表,我知道如何在没有 rxjava 的情况下做到这一点,但我想练习一下。
这是我目前的代码:
pollDeliveries = Observable.interval(POLLING_INTERVAL, TimeUnit.SECONDS, Schedulers.from(AsyncTask.THREAD_POOL_EXECUTOR))
.map(tick -> RestClient.getInstance().getApiService().getDeliveries())
.doOnError(err -> Log.e("MPB", "Error retrieving messages" + err))
.retry()
.subscribe(deliveries -> {
MainApp.getEventBus().postSticky(deliveries);
});
这是给我一份交货清单。现在我想完成第二部分。
希望我已经足够清楚了。 谢谢
【问题讨论】:
-
不确定,但您也许可以使用 flatmap 将交付转换为包含 ETA 的 reactivex.io/documentation/operators/flatmap.html 的新 observable
-
是的,我看到了一些例子,但我真的不明白该怎么做……这是我第一次尝试使用 rxjava
-
这里是一个订阅 GPS 位置的例子,然后转换成地址查找 Observable github.com/mcharmas/Android-ReactiveLocation/blob/master/sample/… line 90
-
@cYrixmorten 感谢分享此资源,它很有用,但不完全是我的情况。他得到了 list 然后他只是把一个地址做成字符串然后把它发送到视图。我需要为每个项目修改并返回完整列表
-
不确定我是否同意..
.flatMap接收到一个 Location 对象(这可能是一个List<Something>),然后在.flatMap内部,Location 被转换为List<Address>,最后在@987654328 @ 地址列表转换为字符串。如果.map从示例中排除,则.subscribe将收到List<Address>。所以总结事件,观察者初始接收一个位置,然后转换:Location -> flatMap(Location) -> List<Address> -> map(List<Address>) -> String -> subscribe(String)。
标签: android polling retrofit observable rx-java