안드로이드 개발 팁 #4 - RxJava의 Observable, Single 객체의 기본 설정 수행 메소드 정의하기
안드로이드에서 RxJava 라이브러리를 활용하여 Observable 또는 Single 객체를 정의할 때 아래 코드와 같이 반복적인 메소드를 호출해야 하는 경우가 있습니다. 특히, Retrofit2 라이브러리로 서버 연동시 Observable로 자료를 받아와야 하는 경우가 그렇습니다.
- subscribeOn(Schedulers.io()): 서버에 요청 후 결과를 대기하는 스레드를 IO 스레드로 지정합니다.
- observeOn(AndroidSchedulers.mainThread()): 서버로부터 받은 자료를 처리할 스레드는 메인 스레드로 지정합니다.
위 두 메소드를 일일이 호출하는 것은 코드 중복이죠. 앱이 커지면, Observable 객체를 수백번 이상 정의할 수도 있는데, 동일한 코드가 수백번 중복되는 것은 나중에 코드 관리상 어려움으로 이어질 수 있습니다. 뿐만 아니라 일관성 없는 코드가 작성되어 예기치 않은 오류 또한 발생할 수 있습니다. 중복 설정은 가능한 하나의 메소드로 통합하는 것이 좋습니다.
Observable, Single 객체의 기본 설정을 수행하는 확장 메소드 정의
위에서 말씀드린 문제를 해결하고자 Observable의 기본 설정을 수행하는 확장 메소드를 정의해 봅니다. 이 포스트에서는 subscribeOn, observeOn 메소드만 호출하지만, 필요하면 다른 메소드들도 추가할 수 있습니다.
Observable 기본 설정 메소드
fun <T> Observable<T>.defaultSetting(): Observable<T> {
return subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
Single 기본 설정 메소드
Single 클래스는 Observable을 상속받지 않습니다. 그 반대 또한 그렇습니다. 그래서 어쩔 수 없이 두 클래스의 기본 설정 메소드는 각각 따로 정의해야 합니다.
fun <T> Single<T>.defaultSetting(): Single<T> {
return subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Upvoted! Thank you for supporting witness @jswit.
![default.jpg](https://steemitimages.com/640x0/https://cdn.steemitimages.com/DQmNwBDPMPvL1yaKWTYF4wxyUmxWiEJgAy1WZWTJyCha5wE/jswit_comment_initial.w320.jpg)