当 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 时得到通知

如果我使用 Firebase 作为后端,我如何在 android 应用程序的后端发生事件时自动发送推送通知

使用 django 频道发生 onmessage 事件时如何触发通知声音?