目前我正在使用RxJava和RxBinding一起观察视图更改的项目。它的工作真的很好的片段和活动,我们很容易接触到生命周期事件 - 因为它的建议,我们绑定到数据流上onResume
和取消绑定的。使用事件总线传递RxJava订阅
最近我们介绍了RecyclerView,它显示视图列表,它们都可以是我们想要订阅的数据流。我面临的问题是将活动/片段中的CompositeSubscription对象通过适配器向下传递,以在创建时查看持有者。当然,它不起作用当用户离开屏幕并返回时,不会重新创建ViewHolders(调用和onResume
)。
解决方案是让适配器,布局管理器(以访问现有的视图持有者)生命周期感知,但它需要我们编写额外的代码来在逻辑层之间传递这些订阅参考。
但是我的一位同事提议使用事件总线,它将用于将事件中的订阅传递给活动/片段,并将它们添加到CompositeSubscription中,并且所有这些将一起取消订阅。此外,我们可以通知查看持有者在用户返回时自行下订单。
您对这种方法有什么看法?在这种方法中我应该注意哪些缺陷?
通过“视图显示列表和所有的人都可以是数据流,我们想订阅”我的意思观点持有者更复杂一点,然后只是简单的点击美景 - 他们可以是如编辑文本视图。而且我提出不违反任何你所提到的点 - 订阅将事件传递从ViewHolder到活动/片段,所以它不会是生命周期知道,我们不会通过订阅适配器 - 适配器将不会了解这些订阅。 –
而BTW对我们有什么,我认为RxJava是最好的解决方案 - 多种数据源(视持有人)发出一个需要进行组合和节流数据 - RxJava可以轻松处理。 –