Rxjava in action

RxJava in Action

레진 개발자 김태호님이 RxJava의 다양한 사용법을 RxJava in Action이란 이름으로 GDG Korea 안드로이드 Rx 세미나에서 공유한 내용입니다.

RxJava in Action

특정 주제보다는 경험적인 내용을 위주로 코드와 함께 다루겠습니다.

RxBinding

버튼, 스크롤, 여러 이벤트를 옵저버블로 처리해주는 라이브러리. 버튼 클릭, 스크롤 상태에 대한 처리, 기타 뷰 이벤트 처리에 모두 사용할 수 있습니다. 레진도 물론 만화의 스크롤 이벤트 처리등도 다 RxBinding를 사용합니다.

이런 개발 뉴스를 더 만나보세요

(코드와 함께 설명)

오퍼레이터

  • interval - 특정 시간 간격으로 이벤트 처리합니다.
  • withLastesFrom - 다른 옵저버블을 참조해서 마지막으로 생성한 이벤트를 가져와 조합합니다.
  • distinctUntilChanged - 중복된 이벤트는 무시하고 이벤트가 달라질 때만 처리합니다.
  • startWith - 구독시 특정 이벤트를 발생하게 함. 어떤 애들은 처음에 상태를 보내주는 것과 보내주지 않는 것이 있는데 그런 것을 맞추기 위함입니다.
  • onBackpressureDrop - 이벤트가 누락이 되면 안되니 버퍼를 많이 쓰는 편인데 일부 처리를 놓쳐도 되면 효율을 위해 드롭을 쓰는 편입니다.

(코드와 함께 설명)

RxReplay

Subject를 많이 쓰게 되는데 고민은 에러나 컴플리트 처리에 의해 스트림이 종료되는게 고민이었습니다. 연속적인 스트림으로 사용하기 위해 RxReplay를 사용합니다.

Kotlin

현재 11% 정도의 코드를 코틀린으로 만들었습니다. 새로 작성되는 부분은 코틀린으로 작성하고 기존 코드는 과반 이상을 엎어야 할 때 사용합니다.

코틀린의 가장 큰 장점 중 하나는 자연스럽게 람다를 쓸 수 있다는 점입니다. 더 이상 Action 객체를 도배할 필요가 없습니다.

기존에는 버터 나이프등을 이용해서 뷰를 바인딩했는데 코틀린에서는 안드로이드 익스텐션을 이용해서 findViewById를 생략하고 뷰 ID를 통해 바로 참고할 수 있습니다. 코드의 양을 줄일 수 있지만 코딩 컨벤션이 다른 필드가 생기는 것은 아쉽습니다.

익스텐션 펑션을 이용해서 상속을 하지 않고 쓰고 싶은 기능을 추가할 수 있습니다.

RxBinding 스타일 이벤트 처리

RxBinding은 뷰를 위한 것인데 코드 작성 방식이 맘에 들어 레진의 로직을 짤 때도 비슷한 형태 작은 단위들을 만들어 조합하는 형태를 시도하고 있습니다. 작은 로직의 합이기 때문에 유지보수가 쉽고 테스트도 쉽습니다.


발표 슬라이드는 아래를 참고해주세요

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.

Realm Team

Realm의 미션은 더 나은 앱을 빠르게 개발할 수 있도록 돕는 것입니다. 이를 위해 저희는 개발자들이 실시간 협업, 가상 현실, 라이브 데이터 동기화, 오프라인 경험, 메시징 등 정교하고 강력한 기능을 쉽게 개발할 수 있도록 하는 개발 도구와 플랫폼을 제공하고 있습니다.

저희는 모바일 인터넷이 수많은 사용자와 보다 많은 디바이스가 속한 개방형 네트워크와 이들 간의 실시간 상호 작용으로 진화할 것이라고 믿으며, 개발자가 이같은 방향으로 발전할 수 있도록 돕기 위해 저희 제품들을 개발하고 있습니다.

4 design patterns for a RESTless mobile integration »

close