Skip to content

Commit 4899060

Browse files
Mikhail ValuyskiyMikhail Valuyskiy
authored andcommitted
Добавлены примеры работы с subjects
1 parent 0efc623 commit 4899060

5 files changed

Lines changed: 125 additions & 0 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package ru.androidschool.rxjava.kotlin.subjects
2+
3+
import io.reactivex.subjects.AsyncSubject
4+
import io.reactivex.subjects.Subject
5+
import org.junit.Test
6+
7+
class AsyncSubjectDemo {
8+
9+
@Test
10+
fun asyncSubjectdDemo() {
11+
val subject: Subject<String> = AsyncSubject.create()
12+
13+
subject.subscribe(
14+
{ s -> println("Observer 1: $s") },
15+
{ e -> e.printStackTrace() }
16+
) { println("Observer 1 done!") }
17+
18+
subject.onNext("Alpha")
19+
subject.onNext("Beta")
20+
subject.onNext("Gamma")
21+
subject.onComplete()
22+
23+
subject.subscribe(
24+
{ s -> println("Observer 2: $s") },
25+
{ e: Throwable -> e.printStackTrace() }
26+
) { println("Observer 2 done!") }
27+
}
28+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package ru.androidschool.rxjava.kotlin.subjects
2+
3+
import io.reactivex.subjects.BehaviorSubject
4+
import io.reactivex.subjects.Subject
5+
import org.junit.Test
6+
7+
class BehaviorSubjectDemo {
8+
9+
@Test
10+
fun behaviorSubjectdDemo() {
11+
val subject: Subject<String> = BehaviorSubject.create()
12+
13+
subject.subscribe { s -> println("Observer 1: $s") }
14+
15+
subject.onNext("Alpha")
16+
subject.onNext("Beta")
17+
subject.onNext("Gamma")
18+
19+
subject.subscribe { s -> println("Observer 2: $s") }
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package ru.androidschool.rxjava.kotlin.subjects
2+
3+
import io.reactivex.subjects.PublishSubject
4+
import io.reactivex.subjects.Subject
5+
import org.junit.Test
6+
7+
class PublishSubjectDemo {
8+
9+
@Test
10+
fun publishSubjectDemo() {
11+
val subject: Subject<String> = PublishSubject.create()
12+
13+
subject.subscribe { x -> println(x) }
14+
15+
subject.onNext("1")
16+
subject.onNext("2")
17+
subject.onNext("3")
18+
19+
subject.onComplete()
20+
}
21+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package ru.androidschool.rxjava.kotlin.subjects
2+
3+
import io.reactivex.subjects.ReplaySubject
4+
import io.reactivex.subjects.Subject
5+
import org.junit.Test
6+
7+
class ReplaySubjectDemo {
8+
9+
@Test
10+
fun replaySubjectdDemo() {
11+
val subject: Subject<String> = ReplaySubject.create()
12+
13+
subject.subscribe { s -> println("Observer 1: $s") }
14+
15+
subject.onNext("Alpha")
16+
subject.onNext("Beta")
17+
subject.onNext("Gamma")
18+
19+
subject.onComplete()
20+
// Здесь подписываемся еще раз и получаем все переданные события
21+
subject.subscribe { s -> println("Observer 2: $s") }
22+
}
23+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package ru.androidschool.rxjava.kotlin.subjects
2+
3+
import io.reactivex.Observable
4+
import io.reactivex.subjects.Subject
5+
import io.reactivex.subjects.UnicastSubject
6+
import org.junit.Test
7+
import java.util.concurrent.TimeUnit
8+
9+
class UnicastSubject {
10+
11+
@Test
12+
fun unicastcSubjectdDemo() {
13+
val subject: Subject<String> = UnicastSubject.create()
14+
15+
Observable.interval(300, TimeUnit.MILLISECONDS)
16+
.map { l: Long -> ((l + 1) * 300).toString() + " milliseconds" }
17+
.subscribe(subject)
18+
19+
sleep(2000)
20+
subject.subscribe { s -> println("Observer 1: $s") }
21+
sleep(2000)
22+
}
23+
24+
fun sleep(millis: Long) {
25+
try {
26+
Thread.sleep(millis)
27+
} catch (e: InterruptedException) {
28+
e.printStackTrace()
29+
}
30+
}
31+
32+
}

0 commit comments

Comments
 (0)