无法解决AsyncOnSubscribe中的编译错误

时间:2017-12-26 22:00:50

标签: rx-java

Observable<ScanResult> scanResultStream( UUID uuid ) {
    return Observable.create( new AsyncOnSubscribe<Boolean, Subscriber<ScanResult>>() {
        @Override
        Boolean next( Boolean previousState, long requested, Observer<Observable<Subscriber<ScanResult>>> sub) {
            return true;
        }
    });
}

已经尝试了我能想到的所有内容,但无法将其编译为常规,RxJava文档通常不是很有帮助,我找不到更好的示例或解释。

问题似乎在于<T>的第二个构造函数类型参数AsyncOnSubscribe,文档中说的是“Subscriber与此类型兼容的类型”。从字面上看,我认为这应该是<Subscriber<ScanResult>>,但这不起作用。我得到一个消息,该类必须被声明为abstract或实现next(S, long, Observer<Observable<? extends T>>),但是 从字面上理解 this ,我的方法签名应该是next(Boolean previousState, long requested, Observer<Observable<Subscriber<ScanResult>>> obs),但这会产生消息'方法不覆盖其超类的方法'。

我还得到'未选中的作业:'rx.Observable<T>rx.Observable<com.polidea.rxandroidble.scan.ScanResult'。

如果我能找到AsyncOnSubscribe的明确解释,或许我可以解决这个问题。 (这一切都是在我想使用Observable.create( Observable.OnSubscribe)时开始的,但发现它已被弃用。)

1 个答案:

答案 0 :(得分:0)

环境:

  

RxJava 1.3.4

  • 这是错误的:Observer&gt;&gt;子
  • 缺少imp

结果

Observable<ScanResult> scanResultStream(UUID uuid) {
    Observable<ScanResult> scanResultObservable =
        Observable.create(
            new AsyncOnSubscribe<Boolean, ScanResult>() {
              @Override
              protected Boolean generateState() {
                return null;
              }

              @Override
              protected Boolean next(
                  Boolean state,
                  long requested,
                  Observer<Observable<? extends ScanResult>> observer) {
                return null;
              }
            });

    return scanResultObservable;
  }