자주 작동하는 시간을 자주 업데이트하는 TextView가 있지만 문제는 다른 조건에 대한 일정 시간을 변경하려고하지만 일정 시간을 변경할 수 없다는 것입니다. 초기에 설정된 시간이 계속됩니다.변경 타이머 일정 scheduleAtFixedRate
private Long mPeriod = Long.parseLong("8000");
public void startTimer() {
Logger.i("startTimer", "startTimer");
stopTimer();
mTimer = new Timer();
mTimerTask = new TimerTask() {
@Override
public void run() {
// postInvalidate();
Logger.i("timer", "timer");
Thread th = new Thread(new Runnable() {
@Override
public void run() {
Logger.i("thread", "thread");
Long ll = System.currentTimeMillis();
mRelativeTime = DateUtils.getRelativeTimeSpanString(
Long.parseLong(mText + ""), ll, 0);
Long diff = ll - Long.parseLong(mText + "");
// long diffSeconds = diff/1000 % 60;
long diffMinutes = diff/(60 * 1000) % 60;
long diffHours = diff/(60 * 60 * 1000) % 60;
Logger.d("diffMinutes", diffMinutes + "");
Logger.d("diffHours", diffHours + "");
if (diffMinutes == 0 && diffHours == 0) {
Logger.i("5000", "5000");
mPeriod = Long.parseLong("5000");
} else if (diffMinutes < 60 && diffMinutes != 0
&& diffHours == 0) {
Logger.i("30000", "30000");
mPeriod = Long.parseLong("30000");
} else if (diffHours > 0) {
Logger.i("600000", "600000");
mPeriod = Long.parseLong("600000");
}
**// This line is not working...
mTimer.scheduleAtFixedRate(mTimerTask, 0, mPeriod);**
// Change text
handler.sendEmptyMessage(0);
}
});
th.run();
}
};
mTimer.scheduleAtFixedRate(mTimerTask, 0, mPeriod);
}
public void stopTimer() {
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
}
그 중복 질문. 그리고 같은 녀석이 대답했다 : P –
그것은 중복 질문이 아니다. TimerTask 내에서 TimerTask를 재 스케줄 한 후 다시 시작하기 때문에 재귀처럼 취급하고 있던 TimerTask 내에서 타이머를 다시 예약하려고합니다. –