目前我正在研究使用 RxJava 和 RxBinding 来观察视图变化的项目。它对于我们可以轻松访问生命周期事件的片段和活动非常有效 - 因为建议我们绑定到数据流 ononResume
和 unbind on onPause
。
最近我们引入了 RecyclerView,它显示视图列表,它们都可以是我们想要订阅的数据流。我面临的问题是在创建时将 CompositeSubscription 对象从活动/片段通过适配器向下传递到视图持有者。onPause
当然,当用户离开屏幕并返回(并被onResume
调用)时,不会重新创建 ViewHolders 。
解决方案是让适配器、布局管理器(访问现有的视图持有者)生命周期感知,但它需要我们编写额外的代码来在逻辑层之间传递这些订阅引用。
然而,我的一位同事建议使用事件总线,它将用于将事件中的订阅传递给活动/片段,在那里它们将被添加到 CompositeSubscription 并且所有这些都将一起取消订阅。此外,当用户返回时,我们可以通知视图持有者自己订阅。
您如何看待这种方法?在这种方法中是否有任何我应该注意的陷阱?