2017-06-22 19 views
0

on android私はrequery dbを使用しており、DBの変更をサーバーにアップロードしようとしています。同じことを達成するために、私は次のロジックrequery db&rxjava observableResultは、後続の関数を複数回呼び出します。

Scheduler sub2 = Schedulers.newThread(); 
Scheduler ob2 = Schedulers.newThread(); 
data.select(Broadcaster.class) 
      .where(Broadcaster.IS_DIRTY.eq(true)) 
      .get() 
      .observableResult() 
      .subscribeOn(sub2) 
      .observeOn(ob2) 
      .flatMap(broadcasters->broadcasters.observable()) 
      .flatMap(broadcasters->Backend.getInstance() 
        .uploadBroadcaster(broadcasters) 
        .onExceptionResumeNext(Observable.empty())) 
      .flatMapSingle(broadcaster -> markUploaded(broadcaster)) 
      .doOnError(t->Log.e(TAG,"Error uploading ",t)) 
      .subscribe(); 

を実行している。しかし、すべてのためにしています変更uploadBroadcasterは、同じデータを複数回(4-10回)と呼ばれています。 私はここで間違っています。

+0

'onNext()'ごとに 'flatMap()'が呼び出されるので、それは上流のObservable Emissionに依存しているので、おそらく単一の項目以上を出力しているので、 'uploadBroadcaster'を複数回呼び出しています。 '.observableResult()'と 'broadcasters.observable()'は何をしますか? – yosriz

+0

質問が更新されました。私はアンドロイドでクエリーDBを使用します。 .observableResultは、reactResultとしてdbに変更を送信し、.observableはreactiveResultをobservableに変換します。 –

答えて

0

間違いは鉱山でした。このコードブロックは複数回呼び出されました。サブスクリプションが複数回発生しました。

関連する問題