2017-02-12 110 views
1

是否存在与Android的状态变化(如方向改变)或异步平台事件(如推送通知事件)等打交道时处理RxJava订阅优雅的方式?在Android上处理RxJava订阅优雅?

我一直在使用EventBus来处理类似这样的事情,并且如果可能的话(如果可能的话)会完全转移到RxJava上(不需要EventBus),但不知何故EventBus架构看起来好多了(只是注册并根据需要取消注册)来处理这些场景,特别是在处理Android平台事件时。

单独RxJava,似乎我们仍然需要坚持超越片段/活动的生命周期订阅的方式(或者与装载机保留片段应用缓存等是否有任何其他人?)所有这些似乎都感觉像是一些额外的工作和处理。

+0

如何事件总线解决它优雅? – yosriz

回答

0

使用CompositeSubscription

这里是一些例子:

private CompositeSubscription subscriptions = new CompositeSubscrition(); 

public void someSubscribe() { 
    subscriptions.add(Observable.just(null).subscribe(someNull -> doSmth()) 
} 

@Override 
public void onPause() { 
    subscriptions.clear() //Here all subscriptions, that were added to composite subscription, will unsubscribe 
    super.onPause() 
} 
+0

我不认为CompositeSubscriptions是生命周期知道是什么人?或者你能否解释他们如何在上述场景中工作(异步事件或配置更改等)? –

0

你可以用总线上-RX替代EventBus。然后你必须使用单身主题发布事件。在这种情况下,您不需要保留订阅,因为主题是“热”可观察项。这意味着您可以随时订阅/取消订阅,并且仍然可以制作活动。 (重新)认购时发生的事情由Subject type决定。

如果你想从事件总线驱动的架构得到完全消失,然后接受事实,那就是配置的变化之间没有“银弹”保留观测量(或任何其他对象)。您可以使用保留的片段,加载器,保留的演示者,单身人士,一些图书馆等。这取决于具体情况和您的个人喜好。