2

Controller+模式在 Android中EventBus工作得很好,但是到处触发事件变得非常混乱。如果控制器多次被要求加载相同的数据,很容易让它第一次开始加载,并在加载时忽略后续请求,并在加载完成后开始监听未来的加载请求。如何使用 RxJava 做到这一点(使用 MVP 演示者?)

设想

我的 android 应用程序中有一个单例ColorModel,它加载我最喜欢的颜色(来自多个来源),作为Observable<String>(String == hexcode)。

我的ColorPresenter钩子ColorModel,将String十六进制代码转换为Color可以显示在ColorView.

这些是我的逻辑的主要部分:

  1. Observable<String> getColor()(来自ColorModel
  2. Observable<Color> getColorForView()(来自ColorPresenter
  3. subscribe()(在ColorView

问题

  • #1 在每个订阅上创建。如果我有多个演示者调用#1,这是非常浪费的。我不希望重复此步骤(仅在第一次调用时启动,然后在之后缓存)。
  • 当我在 期间取消订阅时onStop(),#2 被取消(需要),但是取消订阅会上升到 #1 也被取消(不需要)。
4

2 回答 2

0

您可以将 ConnectedObservables 与重放运算符一起使用。请参阅Single Observable with Multiple Subscribers中接受的答案。

于 2016-03-15T14:04:12.533 回答
0

你应该看看 operator cache。您可以使用它并将对可观察对象的引用存储在某处(例如ConnectableObservable)。

请注意,因为您无法取消订阅由cache操作员创建的 observable。但在你的情况下,这就是你想要的,因为从 #2 退订不再影响 #1 生命周期。

于 2016-06-17T14:46:54.840 回答