2016-01-13 18 views
1

我有在延伸Observable.OnSubscribe凌空请求一些听众,我想使用rxjava发出消息一旦达到这些方法可观察到的外部呼叫的方法。基本上我有:发送事件实现使用rxjava

public class CallListener implements Observable.OnSubscribe<Boolean>{ 

    Boolean success; 

    public void onSucess() { 
    success = true; 
    // need to call call() 
    } 

    public void onError() { 
    success = false; 
    // need to call call() 
    } 

    @Override 
    public void call(Subscriber<? super Boolean> subscriber) { 
    // How can i call this method from onSuccess and onError ? 
    subscriber.onNext(success); 
    subscriber.onCompleted(); 
    } 


} 

我怎么能从onSuccess和onError调用call()方法?我的目标是使用观察者链接调用监听器,这些调用监听器基本上是每个请求的UI控制器(创建加载,提供错误处理,保存json),而不必创建第三个类来使callListener成为可观察对象(我想发出消息直接来自CallListener)。提前致谢。

回答

1

我没有完全理解你的使用情况。但是,如果您只是试图从成功/失败方法调用onNext和onComplete方法,那么您可能只需保留订阅参考并根据需要使用它。

public class CallListener implements Observable.OnSubscribe<Boolean>{ 

    Boolean success; 
    Subscriber<? super Boolean> subscriber; 

    public void onSuccess() { 
    success = true; 
    // need to call callOnNext() 
    callOnNext(); 
    } 

    public void onError() { 
    success = false; 
    // need to call callOnNext() 
    callOnNext(); 
    } 

    @Override 
    public void call(Subscriber<? super Boolean> subscriber) { 
    this.subscriber = subscriber; 
    } 

    private void callOnNext(){ 
     if(subscriber != null && !subscriber.isUnsubscribed()){ 
      subscriber.onNext(success); 
      subscriber.onCompleted(); 
      subscriber = null; 
     } 
    } 
} 
+0

感谢您的回答。你可以添加一个注册观察者到这个类的例子吗? – sagits