ElementAdded(A)、ElementRemoved(R)、ActionStarted(S)、ActionFinished(F)のイベントを観測しています。 AddsとRemoveのいくつかは、ActionStartedとActionFinishedの間に挟まれています。私は、イベントのサブシーケンスを単一のイベントElementMoved(M)に置き換え、非サンドイッチイベントを遅滞なく飛ばすようにしたい。 ElementMovedイベントには、置き換えられるすべてのイベントを含む配列が含まれている必要があります。RxJava:要素のサブシーケンスを1つの要素に置き換えます。
---A--A--R--S-A-R-F-R-A-A--
(my transformation)
---A--A--R--------M-R-A-A--
ElementMovedがActionFinishedイベントが発生した瞬間に表示されるべきである: はここでの例です。何ActionFinishedイベントが最後に挟まれたイベント以来、タイムアウトTの後に解雇されていない場合
さらに、その後、すべてのオリジナルのイベントではなく、火災必要があります。
-----T
---A1--A2--R3--S4-A5-R6------------R7-A8-A9--
(my transformation)
---A1--A2--R3---------------S4A5R6-R7-A8-A9--
をタイムアウト後に解雇されActionFinishedイベントがあるかもしれませんか例のように起こることはありません。それが決して起こらなければ、何もすることはありません。それは起こり、ウィンドウが開いていないので、それを新しいストリームに単独で作成するActionFinishedイベントが発生します。たとえば、次の変換が指定されたタイムアウトにウィンドウを閉じることができない場合
-----T
---A1--A2--R3--S4-A5-R6------------F7-A8-A9--
(my transformation)
---A1--A2--R3---------------S4A5R6-F7-A8-A9--
基本的に、それはそのまま全て保留イベントをフラッシュしなければなりません。
このようなイベントのフラッシュは、対応するFイベントの前に新しいSイベントが発生した場合にも発生します。 (この新しいSイベントは、上記のロジックに従って保留されるべきです)。例えば、
---A1--A2--R3--S4-A5-R6--S7---R9-A9-A10-F11-A12--
(my transformation)
---A1--A2--R3------------S4A5R6---------M7- A12--
私は幸運を伴ってしばらくの間、ウィンドウのオペレーターと遊んできました。バッファー演算子はフリーフローティングイベントの遅延を導入しますが、私の場合は受け入れられません。スキャンは元のストリームと同じくらい多くのイベントを発生させますが、これは私が望むものではありません。私は確かに失われているので、どんな助けも非常に高く評価されるだろう。
編集1:ウィンドウが開いている間に新しいSイベントが表示されたら、洗い流す程度を追加しました場合
編集2:移動のイベントは、それが交換されたイベントのリストが含まれている必要があることを明確にします。
編集3:RX-Javaから変更タグは、RX-のJava2する
編集4:ActionFinishedイベントが来る場合には、タイムアウトキックの後に何が起こるのかを明確に
ありがとうございます!
S A FまたはS R Fをお持ちの場合はどうなりますか?これらのパターンは許可されていますか? – akarnokd
はい、SとFの間のAイベントとRイベントの任意のシーケンスが許可されます(ゼロAイベントとRイベントを含む)。 – luisobo
上記の2つの編集を行いました。 – luisobo