RxAndroid,事件总线和Activity生命周期

dor*_*ors 6 android activity-lifecycle otto rx-java rx-android

我发现一些文章谈论RxJava/RxAndroid如何取代事件总线(如otto)

第一篇文章的引用:

来自Square的Otto在前几天被正式弃用.在Android世界中,我们现在可以为"EventBusses死了很长的RxJava"而欢呼.

但我有一件事是:

事件总线的一个好处是它们对Activity生命周期有很大的帮助,因为你不需要手动管理注册/取消注册回调(从而避免内存泄漏)

示例流程:

  • 活动订阅获取歌曲的事件(比如SongsAvailableEvent)
  • 我们要求歌曲(我们提出网络请求)
  • 我们在请求中更改设备的方向
  • Activity死了,构建了一个新的,也订阅了SongsAvailableEvent
  • 新活动获取事件并更新UI,旧活动(现在已经死了)没有得到事件(耶!)

上面的文章看起来这个流程是由RxAndroid/RxJava"解决"的,但是使用Rx时,你仍然需要在更改设备的方向时手动订阅/取消订阅Observable.此外,如果我想"重用"Observable中的请求,我需要以某种方式持久化它,以便我将在新Activity中订阅相同的Observable(我不太清楚如何做到这一点,但它是不是重点:)).

我的问题是:这个问题是否可以用纯RxAndroid/RxJava轻松解决,或者我是否仍然需要使用事件总线/扩展Rx使用RxLifecycle之类的东西(由于我不在表示层管理我的Observables使事情变得复杂) ?

Gab*_*han 0

你的Activity的onDestroy总是可以调用unsubscribe。

至于让事情能够重用请求 - 查看 Loaders 和 LoaderManager。EventBus 和 RxJava 来解决这个问题从来都不需要。