【发布时间】:2016-03-10 20:04:28
【问题描述】:
Controller + EventBus 模式在 Android 中运行良好,但到处触发事件变得非常混乱。如果控制器多次被要求加载相同的数据,很容易让它第一次开始加载,并在加载时忽略后续请求,并在加载完成后开始监听未来的加载请求。我怎样才能用 RxJava 做到这一点(使用 MVP 演示者?)
场景
我的 android 应用中有一个单例 ColorModel,它以 Observable<String>(字符串 == hexcode)的形式加载我最喜欢的颜色 (from multiple sources)。
我的ColorPresenter 挂钩到ColorModel,将String 十六进制码转换为Color 可以显示在ColorView 中的对象。
这些是我的逻辑的主要部分:
-
Observable<String> getColor()(来自ColorModel) -
Observable<Color> getColorForView()(来自ColorPresenter) -
subscribe()(在ColorView)
问题
- #1 在每个订阅上创建。如果我有多个演示者调用 #1,这非常浪费。我不希望重复此步骤(仅在第一次调用时启动,然后在之后缓存)。
- 当我在
onStop()期间取消订阅时,#2 被取消(需要),但取消订阅会冒泡到 #1 也被取消(不需要)。
【问题讨论】:
-
您需要向我们展示您的代码。仅仅描述是不够的。
-
另外,第一个问题似乎真的不是什么大问题 - 可观察的计算成本有多高?
-
@Enigmativity 假装它在计算上非常昂贵(我实际上并没有加载最喜欢的颜色,它是一个简化版本)
-
好的,你现在需要向我们展示真实的代码。
标签: android system.reactive rx-java reactive-programming reactivex