[안드로이드 / Kotlin] 타이머(Timer) 구현하기

2022. 3. 18. 09:06·Android
반응형

안녕하세요! 오늘은 코틀린에서 제공하는 'kotlin.concurrent.timer'를 이용한 타이머를 구현하는 방법에 대해 간단하게 알아보도록 하겠습니다.

 

Timer 기본개념

Timer는 메인스레드가 아닌 백그라운드 스레드에서 동작가능합니다. 따라서 메인스레드에서만 가능한 UI작업이 불가능지만 이부분은 Handler 및 runOnUiThread()를 이용하면 충분히 구현이 가능합니다. 오늘은 이 두가지외 코루틴을 이용해서 구현하는 방법을 알아보도록 하겠습니다.

 

사용방법
private var time: Timer? = null

fun startTimer(milisec: Int) {
    var time = milisec
    
    timer?.cancel()
    timer = kotlin.concurrent.timer(period = 1000) {
    	time -= 1000	// 1초주기
        
        CoroutineScope(Main).launch {
            if(time < 0) {
            	(this@timer).cancel()
                // 종료후 UI구성
                // ..
            }
        }
    }
}

사용방법은 간단합니다. 사용할 Timer객체를 생성한 뒤 kotlin.concurrent.timer() 메소드를 호출하시면 됩니다.

단, 주의할 점으로 위에서도 언급했다시피 백그라운드 스레드에서 동작하기 때문에 UI작업은 반드시 Handler, runOnUiThread() 또는 코루틴을 사용해서 구현하시면 되겠습니다.

timer()의 파라미터로 period를 반드시 선언해주셔야합니다. period는 말그래도 타이머 반복주기를 뜻합니다.

(저의 경우 1초 주기 타이머를 구현하기위해 1000(ms)으로 선언하였습니다.)

 

 

* Timer 파라미터

  1. name: String - 함수실행에 필요한 스레드이름
  2. daemon: Boolean - 데몬스레드로 동작시킬지 여부
  3. initialDelay: Long - 실행되기전까지 지연시간
  4. period: Long - 실행주기(필수값)

 

반응형

'Android' 카테고리의 다른 글

[안드로이드 / Kotlin] 키해시(Key Hash) 얻기  (0) 2022.04.06
[안드로이드 / Kotlin] 코루틴(Coroutine)  (0) 2022.03.21
[안드로이드 / Kotlin] BottomSheetDialogFragment  (0) 2022.03.16
[안드로이드 / Kotlin] RecyclerView Drag&Drop / Swipe 구현  (0) 2022.03.15
[안드로이드 / Kotlin] 저전력 블루투스 BLE(3), 기기 연결  (0) 2022.03.15
'Android' 카테고리의 다른 글
  • [안드로이드 / Kotlin] 키해시(Key Hash) 얻기
  • [안드로이드 / Kotlin] 코루틴(Coroutine)
  • [안드로이드 / Kotlin] BottomSheetDialogFragment
  • [안드로이드 / Kotlin] RecyclerView Drag&Drop / Swipe 구현
서주냥
서주냥
간단한 것도 기록하는 습관을 가지자
  • 서주냥
    DroidLog
    서주냥
  • 전체
    오늘
    어제
    • 전체보기 (58)
      • 알고리즘 (12)
        • 백준 (4)
        • 프로그래머스 (5)
        • 개념 (3)
      • Android (43)
        • Compose (1)
      • Java (2)
      • Kotlin (1)
  • 링크

    • GitHub
  • 인기 글

  • 태그

    코틀린
    다이나믹 프로그래밍
    reified
    안드로이드
    투 포인터
    자바
    벨만 포드
    Coroutine
    최단 경로
    프로그래머스
    SnackBar
    뷰모델
    viewpager2
    RecyclerView
    Coroutine Flow
    백준
    BLE
    클린 아키텍처
    이진 탐색
    ConstraintLayout
    moshi
    Clean Architecture
    textunit
    알고리즘
    Hilt
    debounce
    블루투스
    코루틴
    viewmodel
    FusedLocationProviderClient
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
서주냥
[안드로이드 / Kotlin] 타이머(Timer) 구현하기
상단으로

티스토리툴바