상세 컨텐츠

본문 제목

RxJava로 뒤로가기 버튼 확인 기능 구현하기

커리어피드 정보

by 더팀스 2020. 2. 2. 15:01

본문

레이니스트(뱅크샐러드)에서 발행한 RxJava로 뒤로가기 버튼 확인 기능 구현하기


뱅크샐러드 앱이 나날이 성장해 나가면서, 유저분들의 피드백을 많이 들을 수 있게 되었습니다.

안드로이드 앱 같은 경우에는 뒤로가기 버튼을 눌렀을 때 바로 앱이 종료되는게 너무 불편하다는 피드백이 많이 들어와 해당 기능을 추가하기로 결정했습니다.

이 기능을 구현한 많은 블로그 글들을 보면 대부분 Handler.postDelayed 를 활용하거나, 변수를 따로 만들어서 뒤로가기 버튼을 눌렀을 때 누른 시간을 캐싱하는 방식으로 작업한 케이스가 많은데, 이 글에서는 저희가 RxJava를 활용해서 구현한 방법에 대해 소개해드리고자 합니다.

먼저 뒤로가기 버튼을 눌렀을 때 이벤트를 emitSubject를 만들어줍니다. SubjectObservable이면서 동시에 Subscriber의 역할을 하기 때문에 UI Event 뿐만 아니라 다양한 종류의 Item을 발행하고 처리할 때 Subject를 활용하면 쉽게 해결할 수 있습니다.

onComplete이 호출되기 직전의 Item만 받는 AsyncSubject, 가장 최근 emitItem으로 구독을 시작하는 BehaviorSubject, 구독 시점부터 발행된 모든 Item을 받는 PublishSubject, 구독 이전의 모든 Item들을 받는ReplaySubject이렇게 총 4가지 Subject가 있는데요, 이 기능 같은 경우는 취소키를 눌렀을 때 발생하는 이벤트들의 시간 간격을 판별하는 로직이 필요하기 때문에 기본값을 가지는 BehaviorSubject를 생성해주었습니다.

Subject에 데이터를 emit하는 방법은 매우 간단합니다. subject.onNext() 를 해주면 끝! 여기서 주의할 점은 SubjectSerializedSubject 로 만들지 않으면 thread safe하지 않기 때문에 여러 Thread에서 Item을 발행하는 경우 꼭 SubjectSerialize 해주셔야 합니다. (참고링크)

더 자세한 정보는 ReactiveX 홈페이지를 참조해주세요.

이제 뒤로가기 버튼을 눌렀을 때 Itememit하는 부분을 작업했으니, Item을 구독하는 부분을 작업해 보도록 하죠!

핵심은 바로 buffer 입니다.

...

더 읽어보러 가기

직군 정보
iOS 안드로이드

기업 문화 정보


기술 스택 정보
RxJS

더 많은 내용은 더팀스에서 확인하세요!

관련글 더보기