티스토리 뷰
Reactive Programming
데이터의 흐름을 먼저 정의하고 데이터가 반영되었을 때 연관된 작업이 실행횐다. 즉, 이벤트에 반응하여 프로그램이 동작한다.
어떻게 이벤트를 반응할까?
- Observer 패턴 (이벤트 처리)
- Iterator 패턴 (이벤트 처리)
- Functional 프로그래밍 (이벤트 가공)
RxJava
https://reactivex.io/intro.html
ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences.
It extends the observer pattern to support sequences of data and/or events and adds operators that allow you to compose sequences together declaratively while abstracting away concerns about things like low-level threading, synchronization, thread-safety, concurrent data structures, and non-blocking I/O.
- ReactiveX는 관찰 가능한 절차를 통해 비동기, 이벤트 기반 프로그램을 구성하기 위한 라이브러리이다.
- Observer Pattern을 확장하며, Sequence를 조합할 수 있는 연산자를 지원한다.
- low-level Thread, 동기화, Thread-Safety, Non-Blocking IO를 쉽게 처리할 수 있다.
기본 구성
class RxJavaExample {
fun start() {
Observable.just(1, 2, 3, 4)
.map {
it * 100
}
.subscribe {
Log.d("RxJavaTAG", it.toString())
}
}
}
- Observable : RxJava의 핵심 요소이다. 관측 가능하며 데이터를 Consumer에게 보내는 역할을 한다. Single, Maybe 등이 있다.
- Operator : 데이터를 원하는 형태로 바꾸는 역할을 한다. map, filter 등 Collection에 쓰이는 연산자와 debounce 등 Rx에 쓰이는 연산자가 있다.
- Observer : Observable를 관측하여 데이터를 소비하는 역할을 한다. Consumer 형태로 하나의 함수를 가진 인터페이스를 람다로 만들 수 있고, Observer를 상속 받아서 만들 수도 있다.
Diagram
RxJava를 공부하면 Diagram을 많이 보게 되는데 Operator를 도형으로 쉽게 설명해준다. 선언부의 주석으로 확인하거나 아래 사이트에 서 쉽게 볼 수 있다.
filter 연산자로 10보다 큰 데이터만 불러온다.
- 가로 실선 : 타임라인
- 모형 : Observable에서 발행하는 데이터
- 세로 실선 : 완료를 의미한다.
- 가운데 박스 : 연산자를 의미하여 데이터가 가공된다.
'Android > RxJava' 카테고리의 다른 글
Android RxJava - Scheduler (0) | 2022.03.05 |
---|---|
Android RxJava - Backpressure (0) | 2022.03.02 |
Android RxJava - Hot Observable, Cold Observable (0) | 2022.03.02 |
Android RxJava - Operator (0) | 2022.03.01 |
Android RxJava - Observable (0) | 2022.03.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Android
- Exception
- 연산자
- commit
- git
- isActive
- 클린코드
- TDD
- 코루틴
- clean code
- 보이스카우트 규칙
- Kotlin
- observable
- rxjava
- DSL
- DART
- ViewModelProvider
- Widget
- ConcatAdapter
- 클린 코드
- viewmodel
- Flowable
- 함수
- Coroutine
- Flutter
- ViewModelStoreOwner
- null
- CancellationException
- ConcatAdapter.Config
- gradle
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함