공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
안드로이드에 사용하기에 유용한 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
}
위 코드도 추가해주셔야 합니다.
다음 포스팅에서는 간단한 예제를 보겠습니다.
이상입니다.