안드로이드 개발 팁 #22 - RxJava 활용하여 몇초 후 코드 실행

일정한 시간 뒤에 특정 코드를 실행하고 싶었습니다. 자바/코틀린에서 제공하는 타이머를 사용하는 방법이 있지만, 불편한 점이 있습니다. 그것은 도중에 취소하는 코드를 만드는 게 좀 불편하다는 것입니다. RxJava를 사용하면 좀 더 간결한 코드를 만들 수 있더라구요. 이번에는 이에 대해 정리해볼까 합니다.


이것이 필요한 케이스

외부 업체로부터 제공받은 동영상 플레이 화면이 있습니다. 플레이어는 그곳과 계약한 SDK를 활용하구요. 플레이를 요청하면 준비가 되었거나 오류가 발생할 때 리스너가 실행됩니다. 문제는요. 아무 리스너도 실행되지 않아 로딩 중 화면으로 멈출 수 있다는 것입니다. 그러면 사용자는 아무 것도 할 수가 없는데요. 일정 시간이 지나면 오류 팝업을 띄우고 플레이 화면을 종료하는 것도 나름의 방법이 아닐까 합니다.


5초 후 토스트 띄우기

아래 코드는 5초 후 토스트를 띄웁니다. 이때, Observable의 delay 메소드를 활용합니다.

val disposable = Observable.just(true).delay(5, TimeUnit.SECONDS)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe {
        Toast.makeText(this@MainActivity, "OK", Toast.LENGTH_SHORT).show()
    }

만약 어떤 작업에 성공하여 예약한 작업을 취소하려면, 아래와 같이 Disposable 객체의 dispose() 메소드를 실행하면 됩니다.

disposable..dispose()

지난 안드로이드 개발 팁

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.15
TRX 0.15
JST 0.029
BTC 56269.96
ETH 2364.95
USDT 1.00
SBD 2.26