2017-07-20 5 views
1

私はサードパーティのライブラリから私に与えられた、または範囲/リストから作成された観測に加入していると元気ですRxJava 2に少し新しいです。RxJava 2 - リストから観察追加と削除

今、私は自分のRxJava 2フロアブル剤を提供したいと思います。

私は、Bluetoothデバイスを検出する必要があるアプリケーションを持っている:ここではいくつかの状況です。一部のサービスでは、スキャンレコードが検出されたときにスキャンレコードを提供しています(デバイスがステータス、RSSIなどの更新情報を送信します)。

デバイスレジストリ内では、デバイスのリスト(MACアドレス、平均RSSIなど)を維持していますが、デバイスが追加された(新しいMACアドレスが検出された)か、デバイスがオフになった)。

は、私はそのようなものを提供する必要がありますね:

class DeviceRegistry { 

    // All devices currently active 
    val devices: MutableMap<String, Device> 

    // Gives a way to subscribe to newly detected devices (to update the UI for instance) 
    fun newlyDetectedDevices(): Flowable<Device> 

    // Gives a way to subscribe to devices which get turned off (to update the UI for instance) 
    fun newlyDetectedDevices(): Flowable<Device> 

    fun onNewScanRecord(scanRecord) { 
     // Check if the device is new, if it is, emit something on the 
     // newlyDetectedDevices flowable 
    } 
} 

私は何からの流動性を作成する方法を理解することはできません。また、その上で新しいイベントを発行して、加入者がそこでイベントを取得する方法も示します。

答えて

2

私はあなたのケースはちょっとフィットFlowable使い方ではないと思います。 ObservableとFlowableの違いを確認するhere公式ドキュメントによると、あなたはとき、Flowableを使用する必要がありますいくつかのファッション どこかで生成される要素の10K +の対処

ので、チェーンは、生成量 を制限するためにソースを伝えることができます。

読み込みディスクから(パース)のファイルは、本質的にブロックしていると プル型あなたがコントロールとして 例えば、背圧とうまく動作しますが、どのように多くの行に指定したリクエスト 量のために、このから読み取ります)。

JDBCを使用してデータベースから読み取ることもブロックし、プルベースの で、 ダウンストリーム要求ごとにResultSet.next()を呼び出すことによってユーザーが制御します。

ネットワーク(ストリーミング)IOネットワークを助けたり、いくつかの論理的な金額を要求するプロトコル 使用サポートのいずれか。最終的には将来的に 、非ブロッキング反応API /ドライバを得ることができます

多くのブロッキングおよび/またはプル・ベースのデータ・ソース。

Flowableの代わりにObservableを使用することをお勧めします。あなたは簡単にSubjectからそれらを作成することができます。それらをチェックしてくださいhere

+0

ありがとうございます。私にとって正しいことは、[PublishSubject](http://reactivex.io/RxJava/javadoc/rx/subjects/PublishSubject.html) –

関連する問題