2017-05-03 22 views
0

テストデバイスの画面は、単にアイテムを発光停止オフラインとデバッグから外れ、観察可能です。デバイスがオンになっていると、オブジェクトの開始が発生します。 もう一つの問題は、randomically recivingアイテムを停止する前に、私は同じ項目の詳細を与えるために別のポストを行うRxJava観測問題

Observable.interval(4000, 
      30000, TimeUnit.MILLISECONDS) 
      .subscribeOn(Schedulers.newThread()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .doOnError(ErrorResponse.handleError()).subscribe(new Action1() { 
         @Override 
         public void call(Object o) { 
          statusSender.doNetworkCallAndGetStringResult(); 
         } 
        }); 

__________________________________EDIT__________________________________

の順に2/3の重複呼び出しを得ることです。私はあなたに完全なログを与えることはできませんが、私は問題がObservableであることを確認するために何をしたかを説明しようとします。

https://github.com/amitshekhariitbhu/RxJava2-Android-Samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/operators/IntervalExampleActivity.java

次私はgetObserver方法は、私は内部の私のネットワーク呼び出しを行うことの違いとasExampleあるRxjava2

isposables.add(statusSender.getObservable(certificate) 
        .subscribeOn(io.reactivex.schedulers.Schedulers.io()) 
        .observeOn(io.reactivex.android.schedulers.AndroidSchedulers.mainThread()) 
        .subscribeWith(getObserver())) 

getObservable方法

return io.reactivex.Observable.interval(INITIAL_DELAY,Utilities.getInstance().getHeartbeatFrequency(),TimeUnit.MILLISECONDS); 

と異なる実装をしようと試みonNext

private DisposableObserver<Long> getObserver() { 
    return new DisposableObserver<Long>() { 

     @Override 
     public void onNext(Long value) { 
      Log.d(TAG, " onNext : value : " + value); 
      statusSender.doNetworkCallAndGetStringResult(); 
     } 

     @Override 
     public void onError(Throwable e) { 
      Log.d(TAG, " onError : " + e.getMessage()); 
     } 

     @Override 
     public void onComplete() { 
      Log.d(TAG, " onComplete"); 
     } 
    }; 
} 

デバイスの画面は、単にアイテムを発光停止オフラインおよびデバッグから外れ、観測可能である場合には

Log

+0

サブスクライバは何をしていますか?あなたはこの観察可能な部分をどこから退会/再購読しますか?あなたは「アイテムを受け取るのを止める前に」ってどういう意味ですか? – yosriz

+0

申し訳ありませんが、私はすべての情報を与えませんでした。私の加入者は、サーバーにデバイスが生きていることを知らせるために、リモートサーバーにpingを送信します。私はサーバーで – Federik

+0

の「アイテムを受け取っています」ということは、Observableがアイテムを送信しない、またはサーバーがpingを取得しなかったことを意味しますか? Observableが重複したアイテムを出すか、サーバーが重複したアイテムを受け取ったかどうかを確認します。 – yosriz

答えて

0

を何が起こっているかのログ。

これはAndroidで予想される動作です:デバイスは動作を一時停止し、バッテリを節約するために低電力モードに切り替わります。バックグラウンドで何かをする必要がある場合は、サービスを作成し、Android固有のタイマーでウェイクアップをリクエストし、マニフェストにデバイスを保持する特別な許可を求めます(これはしばらくしています) 。

+0

オブザーバーがサービス内に登録されています – Federik

+0

これで十分ではありません - https://developer.android.com/training/monitoring-device-state/doze-standby.htmlをご覧ください –

関連する問題