当 RxJava 发生不同事件时如何得到通知?
Posted
技术标签:
【中文标题】当 RxJava 发生不同事件时如何得到通知?【英文标题】:How to get notified when different events happened with RxJava? 【发布时间】:2018-08-26 15:38:03 【问题描述】:我有一个使用 Google 地图和位置更新的应用。我还为我的应用调用了两个包含重要信息的 API。 当所有这些案例都完成时,我需要一些方法来获得通知:
-
谷歌地图已加载。
我知道了我的当前位置。
我已经对 API 进行了两次调用。
我尝试使用 RxJava 和 Retrofit 进行异步调用,并收到一个 Observable 的通知,但我不知道如何确定地图何时加载以及何时获得我的当前位置。
有没有办法使用 Rxjava 来实现?或者有没有其他方法可以在所有这些事件完成时收到通知?
【问题讨论】:
我认为 onMapReady & onLocationResult 可以解决你的问题 从这些事件中创建 observable 并使用 zip 运算符 嗨@than,我怎样才能从这两个事件中创建一个 observable:地图已加载并获得我的当前位置?我知道一旦我被订阅了,我就会启动所有的 observable,但是这两个事件一旦完成就会被调用,所以我的 observable 会一直等待它们,直到它们通知一些东西,对吧? 【参考方案1】:对于加载的谷歌地图,您可以使用来自RxGoogleMaps 的MapReady
。注意:该库没有得到积极维护,因此也许您应该检查实现并重用您需要的部分。
位置可以使用RxLocation
对于 API 调用,您可以使用 Retrofit 提供的 Observable
支持。
要合并结果,您可以使用zip operator。
【讨论】:
以上是关于当 RxJava 发生不同事件时如何得到通知?的主要内容,如果未能解决你的问题,请参考以下文章
当实体集 ChangeTracker 发生更改时如何通知 UI
当 S3 和 Lambda 位于不同区域时,如何使用 S3 事件通知触发跨区域 Lambda 函数
当 UITextField 成为FirstResponder 时得到通知