Android(Kotlin)

rxAndroid, rxJava, rxKotlin

개복치 개발자 2021. 8. 22. 03:51

 

 안드로이드를 하다보면 rxJava, rxKotlin, rxAndroid 그리고 이 것들을 코루틴(coroutine)으로 대체할 수 있고, 완전히 대체는 못하는데 어쩌고 저쩌고 하는 말을 굉장히 많이 듣습니다.

 

 그러면, 이게 도대체 뭔데? 그리고 왜 쓰는건데? 에 대해서 알아보겠습니다.

 

 일단 RX에 대해서 검색해보면 뭐라고 나오는지 보면 보통 이런 말들을 더럽게 이해 안가게 써놓습니다.

 

http://reactivex.io/intro.html

 

RX는 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그래밍을 하기위한 라이브러리다. 

 observer pattern을 이용하여, 시퀀스를 조합할 수 있게 한다.

 low-level Thread 동기화와 Thread 안정성, non-blocking IO에 대한 우려를 줄인다.

 

 여기까지 알아봤을 때 드는 느낌은 비동기 통신이고, 시퀀스를 관리할 수 있다 정도로 감이 옵니다.

 

 자, 그러면 어떻게 사용하는데? 에 대해서 한번 해보겠습니다.

 

 일단은 rxkotlin관련해서 깃허브에 들어가니 아래의 예제가 나옵니다.

 

 위의 예제를 보니 list를 관찰해서 텍스트를 하나씩 가져와서 길이가 5개 미만인(Beta)를 빼고 출력했습니다.

 

 여기까지 보면, 조건을 이것저것 달아서 사용할 수 있구나... 정도로 알 수 있을 것 같습니다.

 

 여기까지 해 보면 아래의 그림이 조금 와닿습니다.

 

http://reactivex.io/

 

 어떤 이벤트들을 그룹화하여 순차적 호출을 시킬 수 있습니다.

 

 자, 그러면 저희가 흔히 사용하는 retrofit을 사용하여 서버와 통신하는 예제를 한번 작성해보겠습니다.

 

 사용하는 api는 googleapis의 books를 사용했습니다.

 

 gradle에 디펜던시 넣어주고

 

 

 Retrofit 부분 만들어주고

 

  

 데이터 모델 만들고

 

서비스 만들고

 

 

 여기까지 했으면 데이터 불러올 준비는 완료했습니다.

 

 그다음 viewModel에서 데이터를 호출해보도록 하겠습니다.

 

 그리고 MainActivity에서 데이터 호출해주면 끝.

 

 

 아 그리고 인터넷 퍼미션 체크해주는거 잊지마세용

 

<uses-permission android:name="android.permission.INTERNET"/>

 

 보너스로 Rx를 하다보면 PublishSubjectBehavoirSubject 라는 친구를 만납니다.

 

 이 친구들은 liveData와 유사한 녀석인데, 잠깐 publishSubject에 대해서 보면 아래와 같이 나옵니다.

 

 

 그럼 2개의 차이를 한번 코드로 보겠습니다.

 

 

 behavoirName 같은 경우에는, subscribe전에 데이터를 확인할 수 있지만, publishName같은 경우에는 subscribe전에 데이터를 읽지 못합니다.

 

 

 -참조

 

https://www.youtube.com/watch?v=3-TAwhn7Bcc 

 

https://dev-daddy.tistory.com/26

 

RxJava를 사용해서 안드로이드 앱 만들기

원문 : https://medium.com/exploring-code/code-your-next-android-app-using-rxjava-d1db30ac9fcc 이 글은 개인적인 학습과 공유를 목적으로 작성 된 번역 글 입니다. 오타나 오역이 있는 경우, 알려주시면 검..

dev-daddy.tistory.com

 

https://4z7l.github.io/2020/12/01/rxjava-1.html

 

[RxJava] RxJava 이해하기 - 1. Reactive Programming 이란 - HERSTORY

Reactive Programing RxJava를 시작하기 앞서, Reactive Programming이 무엇인지에 대해 알아보려 한다. Reactive Programming이란 데이터 흐름과 전달에 관한 프로그래밍 패러다임이다. 우리는 주로 알고리즘 문제

4z7l.github.io

 

https://selfish-developer.com/entry/RxJava-Subject-PublishSubject-BehaviorSubject

 

RxJava: Subject, PublishSubject, BehaviorSubject

0. Subject RxJava에서 Subject 클래스는 구독하고 있는 관찰자(Observer)에게 새로운 값을 전달 할 때 사용하는 클래스다. 따로 Observable로 새로운 값을 만들 필요 없이 Subject 객체에 내장된 onNext 함수로.

selfish-developer.com

https://www.youtube.com/watch?v=iv_Qj_xGNRE 

 

https://selfish-developer.com/entry/RxJava-Subject-PublishSubject-BehaviorSubject

 

RxJava: Subject, PublishSubject, BehaviorSubject

0. Subject RxJava에서 Subject 클래스는 구독하고 있는 관찰자(Observer)에게 새로운 값을 전달 할 때 사용하는 클래스다. 따로 Observable로 새로운 값을 만들 필요 없이 Subject 객체에 내장된 onNext 함수로.

selfish-developer.com

 

'Android(Kotlin)' 카테고리의 다른 글

DiffUtil  (0) 2021.08.22
kotlin lateinit lazy  (0) 2021.08.22
Android Room  (0) 2021.08.22
Execution failed for task ':app:kaptDebugKotlin'  (0) 2021.08.21
간단한 Android Network 연결 상태 체크  (0) 2021.08.20