diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8428ad5..479bd93 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + rxProcess.empy()); findViewById(R.id.flatmap_1_btn).setOnClickListener(view -> rxProcess.flatmap1()); findViewById(R.id.flatmap_2_btn).setOnClickListener(view -> rxProcess.flatmap2()); + findViewById(R.id.meeting_btn).setOnClickListener(view -> rxProcess.meetingTest()); } } diff --git a/app/src/main/java/org/ntlab/developrx/JavaRxProcess.java b/app/src/main/java/org/ntlab/developrx/JavaRxProcess.java index 49a8d1e..95fb78b 100644 --- a/app/src/main/java/org/ntlab/developrx/JavaRxProcess.java +++ b/app/src/main/java/org/ntlab/developrx/JavaRxProcess.java @@ -1,9 +1,12 @@ package org.ntlab.developrx; +import android.util.Pair; + import org.ntlab.developrx.utils.ThreadUtil; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; +import java.util.Date; import java.util.concurrent.TimeUnit; import io.reactivex.BackpressureStrategy; @@ -11,6 +14,7 @@ import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; +import io.reactivex.processors.PublishProcessor; import io.reactivex.schedulers.Schedulers; /** @@ -213,4 +217,33 @@ ); flowable.subscribe(new DebugSubscriber<>()); } + + public void meetingTest() { + PublishProcessor processor1 = PublishProcessor.create(); + PublishProcessor processor2 = PublishProcessor.create(); + Flowable> flowable = PublishProcessor.combineLatest(processor1, processor2, (time1, time2) -> new Pair(time1, time2)); + flowable.subscribe(pair -> System.out.println(new Date(pair.first) + " : " + new Date(pair.second))); + + new Thread(() -> { + try { + Thread.sleep(1000); + processor1.onNext(System.currentTimeMillis()); + Thread.sleep(3000); + processor1.onNext(System.currentTimeMillis()); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }).start(); + + new Thread(() -> { + try { + Thread.sleep(2000); + processor2.onNext(System.currentTimeMillis()); + Thread.sleep(1000); + processor2.onNext(System.currentTimeMillis()); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }).start(); + } } diff --git a/app/src/main/res/layout/activity_main_java.xml b/app/src/main/res/layout/activity_main_java.xml index 53f4a00..1c93d9f 100644 --- a/app/src/main/res/layout/activity_main_java.xml +++ b/app/src/main/res/layout/activity_main_java.xml @@ -106,6 +106,14 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/flatmap_1_btn" /> +