2017-06-07 15 views
0

私はRxJavaの新しいバージョンです。rxandroidbleライブラリーのデモを読むと、なぜ最初のブロッカーが切断されるのか不思議です。ストリームが完了していない間のみ、単一の値が、放出されることestablishConnection()状態、のなぜ最初にメソッドを呼び出すと、ディスカバリー後に自動的に切断されるのですか?

@OnClick(R.id.connect) 
    public void onConnectToggleClick() { 
     bleDevice.establishConnection(false) 
       .flatMap(RxBleConnection::discoverServices) 
       .first() // Disconnect automatically after discovery 
       .compose(bindUntilEvent(PAUSE)) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .doOnUnsubscribe(this::updateUI) 
       .subscribe(adapter::swapScanResult, this::onConnectionFailure); 

     updateUI(); 
    } 

答えて

0

RxAndroidBle Observable behaviour。また、オブザーバブルの登録を解除すると接続が切断されることも記載されています。

接続を開いたままにすることに興味がなくなったら、いつでもその接続を解除してリソースの切断とクリーンアップを行う必要があります。

しかし、first()演算子は単一の値を出力し、その後にストリームを完了します。 bindUntilEvent(PAUSE)は一時停止中もストリームを完了するので、first()をまったく使用する必要はありません。だからそれを取り除くだけですべてがうまくいくはずです。

関連する問題