java - 使用 rxjava 从实现可观察外部调用方法的自定义类发送事件

标签 java android reactive-programming observable

我有一些监听器在一个扩展 Observable.OnSubscribe 的 volley 请求上,我想在到达这些方法时使用 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() 方法?我的目标是使用一个观察者来链接 callListeners,它们基本上是每个请求的 UI Controller (创建加载、提供错误处理、保存 json),而不必创建第三个类只是为了使 callListener 成为可观察的(我想发出消息直接来自 CallListener)。提前致谢。

最佳答案

我不完全理解您的用例。但是,如果您只是尝试从成功/失败方法调用 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;
      }
  }   
}

关于java - 使用 rxjava 从实现可观察外部调用方法的自定义类发送事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34776592/

相关文章:

c# - Observable.Retry 没有按预期工作

android - 键盘正在将选项卡和应用程序内容推向 Android 中的 ionic 3

java - 在java类中调用适配器类中的计算函数?

javascript - 如何在 Vue.js 中使两个输入相互 react

java - 这是短路的例子吗?

android - Xamarin 中已关闭应用程序的闹钟功能

c# - 为什么 IObservable<T>.First() 会阻塞?

java - java中的非法远程方法

c# - 如何在 Java 客户端的 WCF 服务中使用 C#-Properties

java - 如何从方法中声明私有(private)静态最终int(java初学者)