Flowable 이란?

- Observable과 같은 RxJava2에서 쓰이는 관찰 가능한 객체이다.

- 사용하는 가장 큰 이유는 backpressure를 처리하기 위함이다.

- Observable : backpressure - aware X

- Flowable : backpressure - aware O

 

+ backpressure - Observer에게 방출되는(관찰하는) Data가 너무 많으면 처리 불가.

                       Memory Leak 발생

 

backpressure에서 2가지 알아야할 용어가 있다.

  • Hot Source
    • Push 관계로 생각
    • Observable은 Observer를 신경쓰지 않는다. 계속해서 Data를 Push한다.
    • 즉, 관찰은 Observer에게 달려있다.
    • 이때, Data를 처리하기 위해 버퍼링이나 다른 방법을 사용해야함.
  • Cold Source 
    • Hot Source의 반대
    • Data가 느리게 Push되는 것으로 생각
    • Observer가 원할 때 Data를 직접 Pull(?)한다

 

Flowable 객체 생성

Flowable.range(0,100)
		.subscribeOn()
        .observeOn()
        ....

 

Hot Source의 문제를 해결하기 위해 

 

무제한 버퍼를 두어 해결 가능하다.

 

Flowable.range(0,100)
		.onBackpressureBuffer()// Data를 받아오는 곳에 무제한 버퍼를 둔다
		.subscribeOn()
        .observeOn()
        ....

 

 

 

 

 

+ Recent posts