RxJava2, RxAndroid2

[RxAndroid2] RxAndroid 란?

알통몬_ 2018. 10. 5. 14:31
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 



이번 포스팅부터는 RxAndroid에 대해 간단히 공부합니다.


안드로이드에 사용하기에 유용한 java8의 기능들이 있습니다.

Stream API 와 같은 푸시 기반 데이터 처리 기능입니다.

아직까지는 안드로이드에서 자바8의 기능들을 완벽하게 사용할 수는 없습니다.


때문에 안드로이드에서 RxJava를 활용한 RxAndroid 라이브러리를 사용한다면

큰 장점이 생깁니다.


RxAndroid

RxJava 에 최소한의 클래스를 추가해서 안드로이드 앱에 리액티브 구성요소를

쉽고 간편하게 사용할 수 있도록 만드는 라이브러리입니다.


기존 안드로이드 개발 중 겪는 어려움 중 하나는 복잡한 스레드의 사용입니다.

그로 인해 발생하는 문제점

- 안드로이드의 비동기 처리 및 에러 핸들링

- 수많은 핸들러와 콜백으로 인하여 발생하는 디버깅 문제

- 2개의 비동기 처리 후 결과를 하나로 합성하는 작업

- 이벤트 중복 실행


RxAndroid의 장점

- 간단한 코드로 복잡한 병행 프로그리맹 가능

- 비동기 구조에서 에러를 다루기 쉬움

- 함수형 프로그래밍 기법도 부분적으로 적용 가능


리액티브 라이브러리 , API

안드로이드에서 사용할 수 있는 리액티브 API 와 라이브러리들

RxLifeCycle

RxJava를 사용하는 안드로이드 앱 전용 라이프 사이클 처리 API

1
2
3
4
    implementation 'com.trello.rxlifecycle2:rxlifecycle:2.2.2'
    implementation 'com.trello.rxlifecycle2:rxlifecycle-android:2.2.2'
    implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.2'
 
cs

RxBinding

안드로이드 UI 위젯용 RxJava Binding API

1
2
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
cs

SqlBrite

SQLiteOpenHelper, ContentResolver 클래스의 Wrapper 클래스.

쿼리에 리액티브 스트림 도입.

1
2
3
implementation 'com.squareup.sqlbrite3:sqlbrite:3.2.0'
// 코틀린용
implementation 'com.squareup.sqlbrite3:sqlbrite-kotlin:3.2.0'
cs

RxLocation

안드로이드용 리액티브 위치 API

1
2
3
4
dependencies {
    implementation 'com.patloew.rxlocation:rxlocation:1.0.5'
    implementation 'com.google.android.gms:play-services-location:15.0.0'
}
cs

rx-preferences

안드로이드용 리액티브 SharedPreferences 인터페이스

1
implementation 'com.f2prateek.rx.preferences2:rx-preferences:2.0.0'
cs

RxFit

안드로이드용 리액티브 Fit 라이브러리

1
implementation 'com.patloew.rxfit:rxfit2:2.0.1'
cs

RxWear

안드로이드용 리액티브 wearable API 라이브러리

1
implementaion 'com.patloew.rxwear:rxwear2:2.0.0'
cs

RxPermissions

RxJava에서 제공하는 안드로이드 런타임 권한 라이브러리

1
implementation 'com.github.tbruyelle:rxpermissions:0.10.2'
cs

RxNotification

RxJava 로 Notification을 관리하는 API

1
implementation 'com.marlonmafra.rxnotification:rx-notification:2.0.0'
cs

RxClipboard

안드로이드 클립 보드용 RxJava Binding API

1
implementation 'com.szagurskii:rxclipboard:1.0.2'
cs

RxBroadcast

안드로이드 Broadcast, LocalBroadcast 에 관한 RxJava Binding API

1
implementation 'com.cantrowitz:rxbroadcast:2.0.0'
cs

RxAndroidBle

BLE 를 다루기 위한 리액티브 라이브러리

1
implementation "com.polidea.rxandroidble2:rxandroidble:x.y.z"
cs

RxImagePicker

갤러리나 카메라에서 이미지를 선택하기 위한 리액티브 라이브러리

1
implementation 'com.mlsdev.rximagepicker:library:2.1.5'    
cs

ReactiveNetwork

네트워크 연결 상태나 인터넷 연결 상태를 확인하는 리액티브 라이브러리

1
implementation 'com.github.pwittchen:reactivenetwork-rx2:3.0.0'
cs

ReactiveBeacons

근처에 있는 BLE 기반의 비콘을 수신하는 리액티브 라이브러리

1
implementation 'com.github.pwittchen:reactivebeacons-rx2:0.6.0'
cs

RxDataBinding

안드로이드 DataBinding 용 RxJava2 Binding API

1
implementation 'com.benoitquenaudon:rxdatabinding:2.0.0'
cs

안드로이드 스튜디오의 환결 설정하기

안드로이드에서 RxJava, RxAndroid를 사용하려면 앱 레벨 gradle 파일에

의존성을 추가해 주어야 합니다.

implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'com.trello.rxlifecycle2:rxlifecycle:2.2.2'
implementation 'com.trello.rxlifecycle2:rxlifecycle-android:2.2.2'
implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.2'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'

이런 식으로 추가해주면 되는데요 위에서 말씀드린 라이브러리들을

구글에 검색하시면 GitHub 오픈 소스 라이브러리 형태로 존재합니다.

의존성은 필요한 것들만 추가해주시면 됩니다.

제가 글에 소개한 라이브로리 말고도 다른 분들이 만든 라이브러리들도 많이

있습니다.


그리고 java8의 기능들도 필요하기 때문에

android {} 블록 안에 

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

위 코드도 추가해주셔야 합니다.


다음 포스팅에서는 간단한 예제를 보겠습니다.

이상입니다.


반응형