·💤 RxJava
구독시점과 발행시점에 주의해서 Hot & Cold Observable에 대해 살펴보자. 1. Cold Observable Cold Observable은 구독시에 데이터 발행을 시작한다. 옵저버가 구독할 때마다 새로운 데이터 스트림을 시작하고 처음부터 데이터를 방출한다. 이것은 옵저버가 Cold Observable을 구독할 때마다 독립적인 데이터 스트림을 생성하고 발행하는 것을 의미한다. 아래의 예시는 interval 연산자를 이용하여 1초마다 아이템을 발행하는 Cold Observable 이다. 아래는 두 개의 구독자가 있다. 첫 번째 구독자가 구독을 시작하고 3초후 두 번째 구독자가 구독을 시작한다. val ob = Observable.interval(1, TimeUnit.SECONDS) ob.subs..
·💤 RxJava
RxJava2부터는 다양한 타입의 Observable을 사용할 수 있다. Observable과 Single은 RxJava 1버전부터 존재했고 Maybe와 Completable은 그 이후에 등장했다. 때문에 현재 Rx 공식문서에도 Observable과 Single 타입만 설명이 있다. 필자도 사실상 Observable 원형 그대로 먼저 실무에서 사용한 것이 아니라 이렇게 변형된 타입들부터 익힌 경우이다. Single, Maybe Completable 세 가지에 대해 다뤄보고자 한다. Observable can emit multiple items Single, Maybe and Completable are one or no emission of items. Single it always either emit..
·💤 RxJava
0. Observable, 그래서 어떻게 쓰이는데? Observable은 다양한 종류의 이벤트나 데이터를 비동기적으로 방출할 수 있는 객체이다. Observable은 데이터 스트림을 나타내며, 이 Observable이 방출하는 이벤트나 데이터는 다양할 수 있는데 어떤 경우에 쓰이는지 살펴보자. 버튼 클릭 이벤트: 사용자가 화면의 버튼을 클릭할 때 마다 Observable은 클릭 이벤트를 방출할 수 있다. 네트워크 요청 결과: 네트워크 요청을 통해 데이터를 받아올 때, Observable은 이 데이터를 방출할 수 있다. 비동기적인 HTTP 요청과 같은 작업에 유용하다. 타이머 또는 주기적인 작업: 일정 시간 간격으로 이벤트를 방출하는 Observable을 생성할 수 있다. 예를 들어, 1초마다 현재 시간을..
·💤 RxJava
Observable 특집으로 Observable의 생성과 종류까지 다뤄보고자 한다. 그 전에 Reactive Programming에 대해 정리한 글이 있는데 옵저버 패턴부터 다시 짚어보고자 한다. 0. Observable 관찰할 수 있는 데이터 스트림 관찰할 수 있는 데이터 스트림을 Rx에서는 Observable 이라고 부른다. 이 데이터 스트림을 관찰하는 Observer들은 Observable이 발행하는 데이터 스트림을 구독하여 데이터를 구독하고 처리한다. 이는 옵저버 패턴을 따른 것으로 옵저버 패턴은 관찰할 수 있는 대상의 상태가 변하면 이를 관찰하는 대상에게 알려주는 구조이다. 쉬운 예시로, 식당 예약을 관리하는 애플리케이션이 있다고 하자. 예약하고 싶었던 식당이 이미 인원이 다 차버려 예약할 수 ..
·💤 RxJava
subscribe 이후 onError로 빠지는 에러를 핸들링하는 중 다시 API 호출을 할 경우가 생겨 onError 안에서 다시 구독을 한 경우가 생겼다. 이 경우 괜찮은 처리일까? stackoverflow 의 답변을 보고 다시 한 번 reactive programming 그리고 functional programming 의 원리 원칙을 기억하기 위해 남기는 글 it is not good to call a subscribe inside a subscribe. Why? Well because this is not how functional programming is supposed to work. You're not thinking functionally you're thinking procedurally..
·💤 RxJava
Scheduler로 Multi Thread 관리하기 Rx를 이용하면 여러 스레드를 사용해 어떤 작업을 수행하는 도중에도 다른 작업을 실행하는 비동기작업을 할 수 있다. Rx에서는 비동기 처리를 수행하는데 필요한 API를 제공하므로 기존에 구축한 비즈니스 로직에 영향을 주지 않고도 데이터를 통지하는 생산자 측의 처리와 데이터를 받는 측의 처리를 분리하며 서로 다른 스레드에서 실행할 수 있다. 즉 생산자가 무엇을 하더라도 소비자가 받은 데이터의 범주에서만 작업을 하게 된다면 비동기로 쉽게 전환하며 교체할 수 있다. 또한 용도별로 적절히 스레드를 관리하는 클래스를 제공해 직접 스레드를 관리해야 하는 번거로움도 없다는 편리함이 있다. Rx에서 제공해주는 operator들을 적절히 사용하여 스레드 관리를 해보자...
·💻 CS
Rx..너는 안드펫 ♡ 0. 왜 Reactive? 리액티브(Reactive) 라는 키워드는 왜 중요해졌을까? 페이스북에서 리액트(React) 라이브러리를 만든 이유도 지속적으로 데이터가 변화하는 대규모 애플리케이션을 구축하기 위함에서 출발했다. 데이터가 변경이 되면 리액트는 가상 DOM을 변경하고 이전의 가상 DOM과 비교하여 변경된 부분만 실제 DOM에 적용한다. 이러한 리액트의 렌더링 방식은 애플리케이션의 규모가 클수록, 데이터의 변경이 많을수록 더 큰 힘을 발휘하고 이러한 큰 장점은 현재 프론트엔드의 가장 사랑받는 기술 중 하나가 된 이유이다. 모바일 기기의 증가나 시스템에서 처리하는 이벤트나 데이터가 극단적으로 증가하면서 사용자의 요청에 바로 반응하여 응답하고 언제 올지 모르는 데이터나 지속적으로..
안드로보이
'Rxjava' 태그의 글 목록