일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 대학톡
- todofication
- 안드로이드
- 타이머앱
- fragment
- recyclerview
- 카드내역 공유
- andorid
- 특가촌
- Android
- RxJava
- 뷰 상태복구
- 뷰 상태 저장
- moveToState
- java.lang.OutOfMemoryError: Java heap space
- 안드로이드 클린 아키텍쳐
- Quickly
- 올인원타이머
- compileKotlin FAILED
- List
- kotlin
- RX
- android clean architecture
- 작성
- nvidia-docker
- Koin
- 특가게시판
- 특가알람
- onViewCreated
- 카드 내역 공유 앱
- Today
- Total
seoft
rxjava 호출 후 1초간 재 호출이 안될경우 이벤트 실행 본문
[문제정의]
호출 후 1초간 재 호출이 안될경우 이벤트 실행을 구현하려한다.
쉽게 설명해서 버튼을 누른 후 1초가 지나면 toast(특정 이벤트)가 출력된다고 가정해보자
버튼을 누른후 1초를 못채우고 0.8초후에 다시 누르게되면 다시 1초를 기다려야 toast가 출력을 기대하는 상황
Handler 혹은 쓰레드를 사용하여 구현할 수 도 있지만 rxjava를 활용해 간단하게 구현 해본다
[문제해결]
Disposable종류 중 SerialDisposable를 사용한다
SerialDisposable ?
하나의 disposable 을 가지며, 새로운 disposable 이 설정될때 이전에 등록된 disposable 을 dispose 시킨다.
따라서 timer 1초 후 toast msg를 출력시키되 해당 disposable을 SerialDisposable 에 등록시키면
1초가 되기 전에 다시 호출이 됬을경우 이전의 1초까지의 카운트를 dispose시키고 새로 1초까지의 카운트를 진행하게 된다.
var serialDisposable = SerialDisposable() // 전역
val disposable = Observable
serialDisposable.set(disposable)
|
[관련코드]
https://gist.github.com/seoft/7b6db60bdd724a5b935d02d1cb85f4c2
'android' 카테고리의 다른 글
Android Room 종합예제(기본연동, ForeignKey, enum, list, Rx연동, unit test) (0) | 2019.11.30 |
---|---|
rxjava subscribeOn observeOn 요약 (0) | 2019.11.30 |
ShortCut 관련 기능 실행시 - Caller can't access shortcut information 에러 (0) | 2019.09.27 |
Cannot find a version of '...' that satisfies the version constraints: 오류 해결 (0) | 2019.09.22 |
UnitTest에 LiveData사용시 에러 (0) | 2019.09.22 |