저는 응용 프로그램에 AsyncTask를 15 초마다 실행하는 타이머가 있습니다.안드로이드가 타이머를 취소 한 후 다시 시작합니다.
Timer timer = new Timer();
public void AsynchTaskTimer() {
final Handler handler = new Handler();
TimerTask timertask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
new updateGPSTask().execute();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(timertask, 0, 15000); // execute in every 15sec
}
이 방법은 onCreate()
메서드에서 시작됩니다.
다른 활동을 호출 할 때 내 타이머에서 내 onPause()
방법으로 timer.cancel()
을 사용하여이 타이머를 취소해야합니다.
이제 주 활동으로 돌아 가면 타이머를 다시 시작해야합니다. onRestart()
메서드에서 AsynchTaskTimer()
을 다시 실행하려고했지만 java.lang.IllegalStateException: Timer was canceled
이 표시됩니다.
타이머를 어떻게 다시 시작합니까? 사용
onpause에서 타이머를 null로 설정하고 timer = new Timer()와 같이 다시 삽입하십시오. 이전 해시 된 객체가 취소 된 것처럼 실행하십시오. 새 객체로 다시 시작하지 않는 한 다시 시작할 수 없습니다. –
왜 핸들러와 타이머를 함께 사용합니까? – tony9099