선생님, 개발을 잘하고 싶어요.

android handler 로 timer 구현 본문

개발/android 개발

android handler 로 timer 구현

알고싶은 승민 2019. 1. 22. 09:57

타이머 구현해야하는데 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의 할 일만 수정하면 자기가 원하는 대로 사용 가능할 것이다.

Comments