RxJava - RxAndroid 공부
RxJava 관련 다른 포스팅
RxJava 를 공부하면서 몇가지 정리를 합니다.
도움이 되거나 혹은 수정할 사항이 있을 경우 알려주시면 감사하겠습니다 :)
1. 크게 RxJava 에는 크게 2가지 개념을 기억하면 됩니다. Observable 과 Observer 입니다.
2. 간단하게 Observable 은 값을 보내고 Observer 는 subscribe() 라는 구독이라는 메서드를 통해서 보낸 데이터를 받아서 처리한다 라고 생각해볼 수 있습니다.
3. Observer 는 Observable 이 값을 보낼때, 값이 더이상 없을 때, 에러가 났을때 3가지 액션에 대해 반응을 합니다.
- 값을 보낼때 :onNext()
- 에러가 났을때 : onError()
- 값이 더 없을때 : onCompleted()
4. Observable.just() 는 하나의 Item 을 바로 발행(emit)하는 간단한 일을 합니다. 간단한 데이터만 전달할 경우, Observable 을 굳이 새로 만들지 않고 쉽게 Observable 을 만들어주는 유틸리티 메서드 입니다. 원래는 첫번째 처럼해야하는데 그것을 두번째 처럼 바꿀 수 있습니다.
1 2 3 4 5 6 | Observable<String> observable = Observable.create(new OnSubscribe<String>() { @Override
public void call(Subscriber<? super String> subscriber) { subscriber.onNext(“hello”); subscriber.onCompleted(); } }); | cs |
1 | Observable<String> observable1 = Observable._just_(“hello”); | cs |
5. Observer 가 데이터를 처리할때, 통신을 하거나 SQLite 등을 사용하는 복잡한 Input/Output 을 할경우 UIThread 에서는 할 수가 없습니다. 그렇기 때문에 UIThread 가 아닌 다른 스레드에서 작동이 되어야 합니다.
.subscribeOn(Schedulers.io())
를 추가해서 메인쓰레드(UIThread) 에서 작동하지 않고 Schedulers.io() 에서 처리하게 합니다.
여기서 Scheduler.io() 는 RxJava 에서 제공하는 '동기 I/O 를 별도로 처리시켜 비동기 효율을 얻기 위한 스케쥴러' 입니다.
6. 안드로이드 UI 화면에 가공된 데이터를 반영하는 일은 UIThread 에 맡겨야합니다.
.observeOn(AndroidSchedulers.mainThread())
RxAndroid 에서 제공하는 UIThread 를 이용합니다.
참고
1. Realm, RxAndroid로 리액티브 앱 만들기 시리즈 참고 - 1편, 2편, 3편, 4편
2. Kurtis Nusbaum 개발자 Medium 참고
'Dev > Android' 카테고리의 다른 글
Android - Adapter 의 역활 (0) | 2017.03.04 |
---|---|
Android - URL 생성 / Developing Android Apps 수업 (0) | 2017.03.03 |
[Android] 안드로이드 - 폴더 안의 파일 이름 가져오기 (3) | 2017.02.21 |
Android - RxAndroid/RxJava 의 combineLatest 예제 1 (0) | 2017.02.20 |
Android - Screen Capture / 스크린캡쳐 하기 (2) | 2017.02.17 |