Rx개념
기존 callback 방식이 아닌, event 기반으로 event를 목적에 맞게 구독하며, event 내용을 조건(filter)/변형(transform)/구독(subscribe) 등을 해가며 처리하는 방식. platform 레벨에서 지원해줘서 사용이 쉽고, 안정적이다.
callback 지옥으로 부터 벗어나고, 목적내용을 조립적으로 구성하여 가독성과 유지보수를 쉽게한다.
실재 장점
비동기 작업에 처리하기 위한, AsyncTask 를 만들고 인터페이스들(callback)을 구현하는 boilerplate 줄여줌.
특히 연속적인 비동기작업도 쉽게 구현가능
이벤트(데이터)를 쉽게 가공, 분배 할수있어 다양한 조건에 맞는 대응 동작을 간편하게 구현가능
Observable(관찰/구독 대상) / Observer(관찰/구독 자)
React의 핵심개념은, 이벤트기반으로 데이터가 흘러가니, ViewModel, Controller, View.. 등에서 서로간의 통신에 대한 interface를 만들거나, 비동기후의 getter/setter 등의 동기문제들으로 부터 자유로워 진다.
// GithubApiProvider.kt
Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.createAsync())
//Call Adapter 에 RxJava에서 제공하는 Scheduler 와 비동기 작업처리에 대한 instance 생성.
RxJava Observable 로 만드는 과정은, method 참고
RxJava2CallAdapterFactory.class
public CallAdapter<?, ?> get(Type returnType, Annotation[] annotations, Retrofit retrofit)
Rx개념 기존 callback 방식이 아닌, event 기반으로 event를 목적에 맞게 구독하며, event 내용을 조건(filter)/변형(transform)/구독(subscribe) 등을 해가며 처리하는 방식. platform 레벨에서 지원해줘서 사용이 쉽고, 안정적이다.
실재 장점
Observable(관찰/구독 대상) / Observer(관찰/구독 자)
React의 핵심개념은, 이벤트기반으로 데이터가 흘러가니, ViewModel, Controller, View.. 등에서 서로간의 통신에 대한 interface를 만들거나, 비동기후의 getter/setter 등의 동기문제들으로 부터 자유로워 진다.
Operator
Scheduler 참고
subscribeOn, observeOn
SubscribeOn은 Observable이 작동 할 스케줄러를 지정합니다. 링크 ObserveOn은 관찰자가 Observable 을 관찰 할 스케줄러를 지정하십시오. 링크 작동(UI작업이라던가, Handler), 관찰(로깅, 트레이싱)을 하는 작업의 내용
Disposable (버릴수있는)
Observable 에서 생성하는 이벤트 스트림과 필요로하는 리소스 관리 CompositeDisposable 을 통해 Activity/Fragment Lifecycle 에 맞는 request cancel 효과를 구현할수있다.
Retrofit & RxJava 연동 Sample
프로젝트 진행하며, 필수 전처리
1. 프로젝트 추가 책 Sample
2. Github App 추가
oAuth를 위한 임의의 App을 생성 oAuth callback 을 통한 onNewIntent 가 호출되도록 callback url(scheme) 지정
1. 라이브러리 추가
2. Retrofit.addCallAdapterFacroty()
RxJava Observable 로 만드는 과정은, method 참고
Disposable & Map(transform)
RxBinding