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のドキュメントはありません非常に有用である、と私はより良い例や説明を見つけることができないすべてのものを試してみました。はAsyncOnSubscribeでコンパイルエラー解決できません
問題は、ドキュメントが、「このと互換性がありますSubscriber
Sの種類」であると言うAsyncOnSubscribe
ための第二のコンストラクタの型パラメータ<T>
、であるように見えます。これを文字通り取ると、これは<Subscriber<ScanResult>>
であるべきだと思いますが、これはうまくいきません。クラスが抽象宣言されなければならない、またはを実装する必要がありますが、とすると、私のメソッドシグネチャは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)
を使用したい時に始めたが、それが廃止されましたが分かった。)
まず、protected Boolean generateState()のオーバーライドが欠落しているようです。メソッドの適切な戻り値の型は、Observable>です。あなたがしようとしていることを説明してください。 (rxjava 1.3.4を使用) –
すべてはここから始まりました:http://adelnizamutdinov.github.io/blog/2015/01/23/using-rxjavas-observable-semantics-for-greater-good/(2番目のコードスニペット)ユーザが退会した場合にHTTPリクエストを自動的にキャンセルするために、 'subscriber.add(Subscriptions.create(call :: cancel)); 'の使用が発生しました。私は、可能な限り類似のものを描きたかったのですが、著者が廃止予定のObservable.create()を使用していることがわかりました。これは 'AsyncOnSubscribe'を使って私にフォームを導きましたが、私はそれをどのように適用するのか分かりません。 ( 'generateState()'のオーバーライドを追加しましたが、助けになりませんでした) –