Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- docker-compose
- Foreign Key
- Kotlin
- Filter
- AWS
- docker
- elementAt
- animation
- ReactNative
- union
- Service
- mongoose
- Generic
- lifecycle
- CLASS
- function
- map
- collection
- MINUS
- Interface
- 생명주기
- recyclerview
- class component
- enum
- list
- ConstraintLayout
- LiveData
- react native
- vuex
- Swift
Archives
- Today
- Total
개발 일기
Rxjava Subject 본문
subject
subject란 구독자가 구독하는 순간 데이터를 발행하는 방식에서 구독자가 없어도 데이터를 발행할수 있도록 만들 줄수 있습니다.
종류 :)
-
AsyncSubject
-
BehaviorSubject
-
PublishSubject
-
ReplaySubject
AsyncSubject
발행된 데이터중 마지막 데이터만 받습니다.
onComplete 바로 전 마지막 onNext 입력 값을 받습니다.
@Test
fun rxSubject(){
val subject : AsyncSubject<Int> = AsyncSubject.create()
subject.onNext(1)
subject.onNext(2)
subject.subscribe {
print("첫번째 발행 데이터 : $it\n")
}
subject.onNext(3)
subject.onNext(4)
subject.subscribe {
print("두번째 발행 데이터 : $it ")
}
subject.onComplete()
}
//결과
첫번째 발행 데이터 : 4
두번째 발행 데이터 : 4
BehaviorSubject
구독자는 구독 하기 바로 전 부터 데이터를 받습니다. ( 기본 값을 설정을 할수도 있습니다. )
@Test
fun rxSubject(){
//val subject : BehaviorSubject<Int> = BehaviorSubject.createDefault(0)
val subject : BehaviorSubject<Int> = BehaviorSubject.create()
subject.onNext(1)
subject.onNext(2)
subject.subscribe {
print("첫번째 발행 데이터 : $it\n")
}
subject.onNext(3)
subject.onNext(4)
subject.subscribe {
print("두번째 발행 데이터 : $it\n")
}
subject.onNext(5)
}
// 결과
첫번째 발행 데이터 : 2
첫번째 발행 데이터 : 3
첫번째 발행 데이터 : 4
두번째 발행 데이터 : 4
첫번째 발행 데이터 : 5
두번째 발행 데이터 : 5
PublishSubject
구독자는 다음 발행 데이터부터 받습니다.
@Test
fun rxSubject(){
//val subject : BehaviorSubject<Int> = BehaviorSubject.createDefault(0)
val subject : PublishSubject<Int> = PublishSubject.create()
subject.onNext(1)
subject.subscribe {
print("첫번째 발행 데이터 : $it\n")
}
subject.onNext(2)
subject.subscribe {
print("두번째 발행 데이터 : $it\n")
}
subject.onNext(3)
}
// 결과
첫번째 발행 데이터 : 2
첫번째 발행 데이터 : 3
두번째 발행 데이터 : 3
ReplaySubject
구독자는 언제 구독하던 처음부터 데이터를 다 받습니다.
@Test
fun rxSubject(){
//val subject : BehaviorSubject<Int> = BehaviorSubject.createDefault(0)
val subject : ReplaySubject<Int> = ReplaySubject.create()
subject.onNext(1)
subject.subscribe {
print("첫번째 발행 데이터 : $it\n")
}
subject.onNext(2)
subject.subscribe {
print("두번째 발행 데이터 : $it\n")
}
subject.onNext(3)
subject.subscribe {
print("세번째 발행 데이터 : $it\n")
}
}
// 결과
첫번째 발행 데이터 : 1
첫번째 발행 데이터 : 2
두번째 발행 데이터 : 1
두번째 발행 데이터 : 2
첫번째 발행 데이터 : 3
두번째 발행 데이터 : 3
세번째 발행 데이터 : 1
세번째 발행 데이터 : 2
세번째 발행 데이터 : 3
'Client > 안드로이드' 카테고리의 다른 글
Fragment recyclerView 관련 메모리 이슈 (0) | 2020.03.27 |
---|---|
ViewModel (0) | 2020.03.27 |
Broadcast Receiver ? (0) | 2020.03.26 |
Service (0) | 2020.03.26 |
paging library ? (페이징 라이브러리) (0) | 2020.03.24 |
Comments