액티비티 안에서 AsyncTask를 상속하는 서브클래스가 있습니다.

이 서브클래스는 네트워크에 엑세스해서 데이터를 뽑아와서 메인스레드의 UI를 업데이트 기능을 하고 있는데요

유저가 버튼을 클릭하면 30초마다 타이머가 발동해서 AsyncTask를 상속하는 이 서브클래스를 실행시키는 기능을 구현하고 싶은데

전에 회색님 글 ( http://www.androidpub.com/4374 ) 보니까 timer는 안좋다고 해서 핸들러가지고 타이머 기능을 구현하는걸로 생각하고 있는데


 mHandler = new Handler();
mHandler.postDelayed(new Runnable() {public void run() {new DownloadPredictions().execute();}}, pref_refreshRate);


여기서 이걸 사용하면 postDelayed는 3초후에 Runnable()을 실행시키기만하지 주기적으로 반복해서는 안되더라고요

그렇다고 무한루프 안에다가 Thread.sleep()를 넣고 핸들러를 post해도 메인스레드에서 문제가 생겨서 실행이 이상하게 되고요...


요지는 핸들러를 사용해서 주기적으로 반복하는 타이머를 어떻게 구현하는가 입니다.









mHandler = new Handler() {
			public void handleMessage(Message msg) {
				if (msg.what == 0) {
					// do stuff, mHandler.
				} else {
					if (value != pref_refreshRate) {
						value += 1000;
						mHandler.sendEmptyMessageDelayed(1, 1000);
					} else {
						mHandler.sendEmptyMessage(0);
					}
				}
			}
		}


대충 이런걸 구글링하다 찾았는데 좀 이해가 안가서요..  이렇게 핸들러 사용하는게 맞는지도 모르겠고..

ㅜㅜ