일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Rxjava
- Kotlin
- 코틀린
- 디자인패턴
- 자바
- Compose
- 글또
- 책
- k8s
- Gradle
- 안드로이드스튜디오
- theming
- 안드로이드강좌
- 커스텀상태
- mockito
- 병럴프로그래밍
- ReactiveProgramming
- viewmodel
- 코루틴
- Coroutine
- 회고
- 스레드
- 안드로이드
- g 단위테스트
- 테스트
- 알게되는
- kotlin강좌
- android
- 병렬프로그래밍
- 알고리즘
- Today
- Total
선생님, 개발을 잘하고 싶어요.
android handler 로 timer 구현 본문
타이머 구현해야하는데 java.util 의 Timer + TimerTask 조합은 구현 방법도 까다롭고(한번 예약한 Task 를 취소하는 과정이 까다롭다.) 그러다보니 생각한 대로 동작하지 않아도 디버그가 힘들었다.
그래서 찾은게 handler를 이용한 타이머구현
handler 가 뭔지 대략적인 설명을 보려면 공식문서를 참조하자.
1. 특정 시간 이후에 한번 발동하는 타이머
postDelayed를 사용하면 첫번째 인자로 들어가는 runnable 객체를 두번째 인자로 들어가는 시간 (millisecond 단위) 이후에 실행하도록 한다.
2. 특정 시간 마다 발동 하는 타이머 (tick)
post를 사용하면 첫번째 인자로 들어가는 runnable 객체를 실행해준다.
task 코드에서 자기 자신 (task)를 특정 시간 이후에 다시 실행하는 코드를 구성하여 주기적으로 task가 실행된다.
3. 진행중인 task 종료하기
removeCallbacks를 사용하여 등록된 runnable 객체를 handler의 message queue에서 빼내서 발생 하지 않도록 한다.
응용으로 사용자가 이벤트 A를 받고 7초 이내로 다시 이벤트 A를 받는지 확인하는 코드를 만들어보자. (이거 때문에 타이머를 찾아보게 되었다.)
0. task A 는 호출되면 이벤트 A 가 7초 이내에 발동하지 못한 것으로 간주되어 알람을 띄워준다.
1. 이벤트 A 를 받을 때 task A 를 7초 이후에 한번 발동하도록 호출한다.
2. 이벤트 A 가 발생할때 task A를 종료하고 1번으로 이동.
millisTime 변수만 수정하고 taskA의 할 일만 수정하면 자기가 원하는 대로 사용 가능할 것이다.
'개발 > android 개발' 카테고리의 다른 글
기존 프로젝트에 MVP를 적용하는 방법 (0) | 2019.06.09 |
---|---|
[나의 작은 모닝루틴] 의존성 주입 koin 사용해보기 (0) | 2019.04.20 |
android viewmodel 사용하는 이유 (0) | 2018.11.28 |
코틀린 데이터바인딩 연결시 (kotlin databinding) (0) | 2018.11.27 |
androidx navigation 구현해보자 (0) | 2018.11.23 |