Android

[Android] Reactive Programming, Rxjava/Rxkotlin/RxAndroid이란?

dev_zoe 2021. 10. 19. 22:55
반응형

Reactive Programming이란?

  • 주변환경과 끊임없이 상호작용하면서, 환경이 변하면 이벤트를 받아 동작하는 프로그래밍
  • Q. 왜 사용하는가? → 비동기 프로그래밍이랑 밀접한 관련이 있음
    • 메인스레드에서 데이터를 불러온다거나, 서버와 통신한다거나 등의 무거운 작업은 별도의 스레드로 분리하여 실행해야함.
      즉 처리가 다 될때까지 기다리는것이 아닌 비동기 작업을 해주어야함
    • AsyncTask로도 가능하지 않은가? → AsyncTask는 공식적으로 deprecated됨.
  • Q. 명령형 프로그래밍과 어떻게 다른가?
    • 명령형 프로그래밍은 코드가 작성된 순서대로 실행됟는거고
    • 리액티브 프로그래밍은, 데이터의 흐름을 먼저 정의하고
      데이터가 변경되었을때 연관되는 함수나 메소드가 그때그때 업데이트되는 방식
    • 따라서 손쉬운 비동기 처리가 가능해짐!
  • 이 반응형 프로그래밍을 쉽게할 수 있도록 도와주는게 ReactiveX 라이브러리
    • 데이터의 흐름을 정의하고, 이걸 감시하여 데이터가 변경되었을때 연관되어있는 함수나 메소드를 호출하는 것이므로 Observable 을 이용하여 이벤트 처리를 하는 라이브러리
  • Q. RxJava, RxAndroid, RxKotlin... 등등 많은데 이것들은 어떤 차이가 있는가?
    • 차이가 거의 없음. Rxjava는 java의 문법을 기반으로 하기때문에 java가 붙은거지, 코틀린에서도 사용이 가능한 라이브러리임 (원래는 kotlin도 java 기반 언어)
    • 굳이따지자면 RxKotlin은 Rxjava를 기반으로 하여 코틀린만의 함수형 프로그래밍을 지원하고, RxAndroid는 Rxjava 기반으로 해서 몇가지 클래스를 더 추가하여 안드로이드 앱에서 리액티브 구성요소를 쉽고 편리하게 만들 수 있는 라이브러리
  • Q. 공통점은?
    • 비동기 처리를 쉽게할 수 있도록 도와주는 라이브러리
    • Observer Pattern을 사용함
    • 콜백 지옥에서 벗어날 수 있음 (왜냐 얘가 관찰을 해서 알아서 바꿔주니까!)
      • 기존에 retrofit을 사용할때 콜백 인터페이스를 통해 onFailure, onResponse로 통신 결과를 전달 받는 콜백을 사용했다면 이걸 쓰지 않고도 비동기 처리가 가능함!!
  • Q. 이와 유사하게 MVVM의 LiveData가 있는것 같은데(Observer Pattern, 모델의 변화 감시 면에서), 이거랑 어떻게 다른지?
  • Q. Rxjava와 Coroutine 둘다 비동기 처리 라이브러린데, 어떤 것을 쓰는게 더 좋을까?
 

Android

Android has 55 repositories available. Follow their code on GitHub.

github.com

구글에서도 안드로이드 예제 프로젝트를 코루틴을 사용하여 설명해주고있다. 아마 코루틴을 팍팍 밀어주고 있는걸 봐선 코루틴을 공부해두면 좋을것같기는 하다. 근데 어렵다.... 여러번 레퍼런스를 봐도 이해를 아직 완전히 못함. 

 

Reference

https://blog.yena.io/studynote/2020/10/11/Android-RxJava(1).html

https://velog.io/@jojo_devstory/Android-RxKotlin-RxAndroid란-Reactive-Programing

 

[Android] RxKotlin, RxAndroid란? - Reactive Programing

이번 포스팅은 Reactive Programing에 대하여 이야기 해보겠습니다.그중에서도 안드로이드에서 제일 많이 쓰이는 RxKotlin, RxAndroid에 대해서 개념만 살짝 짚어보고자 합니다.RxKotlin, RxAndroid을 알아보기

velog.io

https://hwanine.github.io/android/MVVMFinal/

 

Android - MVVM, RxJava, Retrofit, Databinding을 통한 앱 서비스 구축, 간단한 프로그램 예제 (Kotlin)

MVVM 아키텍처를 구현하는데 필요한 여러가지 기술요소들을 활용하여 간단한 프로그램 예제를 구현하여 소개합니다.

hwanine.github.io

https://github.com/ReactiveX/RxJava

 

GitHub - ReactiveX/RxJava: RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based p

RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. - GitHub - ReactiveX/RxJava: RxJava – Reactive E...

github.com

http://reactivex.io/

http://reactivex.io/documentation/ko/observable.html

반응형