-
안드로이드 Rxjava 사용하기 (1)안드로이드 학습/Android 기술면접 대비 코드 2024. 3. 6. 14:34
설명 :
1. [안드로이드 RxJava] 1. Rxjava, RxAndroid란?
2. [안드로이드 RxJava] 2. Observable 클래스
Rxjava가 뭔지는 학습하기는 했지만 개념 이해로는 어떻게 사용하는지 잘 모르겠어서 직접 만들어 보면서 공부해보기로 했다.
기본적으로는
(1) Observer로 Observable에서 발행할 데이터를 어떻게 처리 해줄지 지정.
(2) Observable로 무슨 데이터를 발행하고 발행 이후 어떤 것을 할지 지정
(3) Observable로 Observer 구독
이정도의 과정이 있지 않을까 싶다.
build.gradle (app)
implementation("io.reactivex.rxjava3:rxandroid:3.0.2") implementation("io.reactivex.rxjava3:rxjava:3.1.5") implementation("io.reactivex.rxjava3:rxkotlin:3.0.0")kotlin을 사용한다면 rxkotlin까지 추가 해준다.
1. Observer 생성
val observer = object : Observer<String> { override fun onSubscribe(d: Disposable) { disposable = d } override fun onNext(s: String) { _rxLiveData1.postValue(s) } override fun onError(e: Throwable) { Log.d("error", e.toString()) } override fun onComplete() { _rxLiveData1.postValue("Timer is finished. Thank you") disposable?.dispose() } }- onNext() : 하나씩 순차적으로 데이터를 발행.
- onComplete() : 데이터 발행이 끝났음을 알리는 완료 이벤트를 Observer에 전달.
- onError() : 오류가 발생했음을 Observer에 전달
2. Observable
val observable = Observable.create { emitter -> val messages = listOf("5", "4", "3", "2", "1") for (message in messages) { if (!emitter.isDisposed) { Thread.sleep(1000) // 1초 지연 emitter.onNext(message) } } emitter.onComplete() }- Observable.create를 사용하여 직접 Observable을 생성합니다.
- 1초 간격으로 5~1까지 데이터를 방출한다.
- emitter.onComplete(): 모든 메시지를 방출한 후 스트림을 완료합니다.
observable .subscribeOn(Schedulers.io()) // Observable이 동작을 시작할 스레드"를 지정한다. .observeOn(Schedulers.computation()) // Computation 스케줄러를 사용하여 데이터 처리 .subscribe(observer)- Scheduler로 스레드 지정
- Subscribe로 Observer 구독
LiveData
private val _rxLiveData1 = MutableLiveData<String>() val rxLiveData1: LiveData<String> get() = _rxLiveData1주제와는 벗어나기 때문에 깊게 적지는 않겠지만 LiveData와 DataBinding을 함께 사용해서 onNext로 5~1초 까지 Count 후 onComplete 호출
4. Single class를 활용
private fun example4(){ val source: Observable<String> = Observable.just("Hello Single") Single.fromObservable(source) .subscribe { o -> testTextView4?.text = o } .dispose() }스크린샷 :
위에서는 4가지 조합으로만 기초적인 수준으로 알아봤지만
Observable class 종류와
그것들이 가지고 있는 함수가 조합을 다 써본다면
너무 많은 사용 방법이 있을 것같다.
그래서 직접 사용해가면서 알아봐야 할 듯 싶다.

RxJava 버전 팩토리 함수 버전 1의 기본 팩토리 함수 create( ), just( ), from( ) 버전 2의 추가 팩토리 함수 fromArray( ), fromIterable( ), fromCallable( ), fromFuture( ) 기타 팩토리 함수 interval( ), range( ), timer( ), defer( ) '안드로이드 학습 > Android 기술면접 대비 코드' 카테고리의 다른 글
안드로이드 비동기 처리 2-5 (네트워크 통신 - retrofit) (0) 2024.11.01 안드로이드 비동기 처리 2-3 (Operators : 연산자들) 코드편 (1) 2024.10.31 Anr 예제 (0) 2024.01.23 Android Background Service 예제 (1) 2023.12.22 Android Foreground Service 예제 (0) 2023.12.22
