Android/App개발

타이머 사용 시 주의사항

삼스 2010. 5. 24. 21:20
java.util.Timer와 java.util.TimerTask를 이용한 타이머스레드를 사용할 때 

import java.util.Timer;
import java.util.TimerTask;

// 1. Timer생성
private Timer mTimer = new Timer();

// 2. TimerTask연결 하여 기동
//     INTERVAL시간마다 run()함수가 수행된다.
mTimer.schedule(
new TimerTask(){
public void run() {
mHandler.post(new Runnable(){
public void run(){
Log.d(TAG, "running Timer...");
}
});
}        
   }, INTERVAL,INTERVAL);

// 3. Timer의 제거
mTimer.cancel();

주의>>
** 생명주기의 관리에 주의해야 한다.
  BACK시에는 cancel후 재진입시 schedule을 호출시 정상동작하나..
  HOME시에는 cancel후 재진입시 schedule을 호출하면 IllegalStateException이 발생하면서 타이머가 동작하지 않는다.
  따라서 Timer는 이런식으로 사용하는것을 지양해야 할듯!!!!
  원인은 찾지 못함.